#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/

10-09 03:23