gpt4 book ai didi

c - C 中的 strcat 错误分段

转载 作者:行者123 更新时间:2023-11-30 14:24:39 25 4
gpt4 key购买 nike

#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);
}
}

我遇到此错误:段错误。

如何修复它?

最佳答案

至少有两个错误:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com