如何解决从 plugin_path 返回局部变量我如何改变它
先生,我使用了字符串连接过程,我认为如果文件名为“plugin1”,那么在该文件中将出现“plugin1.dll”,因此我以输出为“C://”的方式连接字符串DataViz//plugin1//plugin1.dll”然后使用简单的fopen函数检查给定路径中是否有文件,如果没有则“返回NULL”或返回“路径”。
#include <stdio.h>
#include <conio.h>
#include <string.h>
char* plugin_path(char filename);
int main(){
char *path;
char filename[] = "plugin";
path = plugin_path(filename);
printf("%s",path);
return 0;
}
char* plugin_path(char filename){
char plugin[] = "C:\\data\\";
char plugin1;
char *str = plugin1;
strcat(plugin,filename);
strcat(plugin," \\ ");
strcat(plugin,".dll");
return str;
}
请你帮我看看上面的代码
解决方法
您应该为新字符串分配足够的大小并将指针返回到分配的区域。
此外,您应该使用 const char*
而不是 char
作为参数来接收字符串。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* plugin_path(const char* filename);
int main(){
char *path;
char filename[] = "plugin";
path = plugin_path(filename);
printf("%s",path);
free(path);
return 0;
}
char* plugin_path(const char* filename){
char plugin[] = "C:\\data\\";
const char* part1 = " \\ ";
const char* part2 = ".dll";
/* +1 for terminating null-character */
char *str = malloc(strlen(plugin) + strlen(filename) * 2 + strlen(part1) + strlen(part2) + 1);
strcpy(str,plugin);
strcat(str,filename);
strcat(str,part1);
strcat(str,part2);
return str;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。