#include <stdio.h>
#include <string.h>
int main() {
char tab[2]={"12"};
FILE *outfile;
char *outname = "/home/dir/";
printf("%s", strcat(outname,tab));
outfile = fopen(strcat(outname,btab), "w");
if (!outfile) {
printf("There was a problem opening %s for writing\n", outname);
}
}
我有此错误:Segmentation Fault。
我该如何解决?
最佳答案
至少两个错误:
char tab[2] = {"12"};
您最好使用
tab[3]
甚至更好的tab[]
-终止符NUL字符需要一个额外的字符。也,
char *outname = "etc...";
在可执行文件的数据段中创建一个常量字符串-不能覆盖它,因为
strcat
使用其第一个参数连接这两个字符串。因此,当strcat()
尝试这样做时,它会出现段错误。采用char outname[50]; // something big enough
strcpy(outname, "/home/dir");
代替。
关于c - C错误分割中的strcat,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11491281/