gpt4 book ai didi

c - fgetc() 创建段错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:10:09 24 4
gpt4 key购买 nike

我在同一个程序中创建了文件“wor.txt”并关闭了它的写入流。但是当我尝试在第一次运行时访问它(我创建了文件)它给出了段错误但是当我重新运行这个程序时它运行成功。

当我删除自动生成的文件并再次运行程序时,它会出现段错误,并且在第二次运行时(不删除文件)它再次成功运行。

注意:文本文件中有数据,因此它不是空的(我在文件管理器中第一次运行后看到了它)

FILE *fp1= fopen("wor.txt","r");

FILE *f1= fopen("wordsa.txt","ab+");

if((f1==NULL)||(f2==NULL)){
printf("f1 or f2 is null");
}

char c='0';
while((c)!=EOF){
printf("Here is one marker\n");
c=fgetc(fp1); //This Line gives error
printf("Here is another marker\n");
fputc(c,f1);
}

最佳答案

char 不足以满足EOF,将类型更改为int

检查 man page fgetc(),它返回一个int,您应该使用相同的数据类型来存储返回值和进一步使用。

就是说,当 f1fp1 中的任何一个为 NULL 时,您仍然继续访问那些文件指针,这可能会创建 UB .您应该对 NULL 检查和 returnexit 有所了解,这样访问这些指针的代码就不会到达。

关于c - fgetc() 创建段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38588793/

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