gpt4 book ai didi

c - 打开文件后出现奇怪的段错误?

转载 作者:太空宇宙 更新时间:2023-11-04 05:37:43 25 4
gpt4 key购买 nike

当我尝试打印 fname 时出现段错误。有人可以解释为什么这会发生在我身上吗?是不是不允许我写入文件,关闭它,然后从文件中读取? argv[2] 已定义。我尝试过多种不同的分配方式。

int main(int argc, char *argv[]){
//Other stuff

char *rfile=calloc(1, 2049);
strcpy(rfile, argv[2]);
FILE *wfile;
wfile = fopen(argv[2], "w");
SaveIndexToFile(index, wfile, alpha); // This does a whole bunch of writing to a the file.
fclose(wfile);

//alpha is declared here, and works just fine.
RemakeIndex(rfile, alpha);
return 1;
}
int RemakeIndex(char *fname, WordList * alpha){
printf("%s", fname);
return 1;
}

最佳答案

您没有检查 fopen 的返回值。如果 fopen 失败,它可以返回 NULL。如果你正在用 NULL 做一些事情,那可能是未定义的行为。打开文件后放置此行。

if ( wfile == NULL ){
perror("fopen");
return;
}

并检查argc 计数是否为三。如果您没有为 ./a.out 提供参数,那么访问 argv[2] 也可能导致段错误。

关于c - 打开文件后出现奇怪的段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28601741/

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