gpt4 book ai didi

c - 当我执行 cat -b 函数时出现段错误错误

转载 作者:行者123 更新时间:2023-11-30 16:18:29 24 4
gpt4 key购买 nike

我想制作“cat -b”功能。

当达到最后一步时,这个结果是完美的。

我遇到了段错误错误,但我不知道如何修复它。

我该怎么办?

FILE *file_name = NULL;
file_name = fopen(av[2], "r");
char temp[1024], *str;
int cnt_file_number = 1;
while(!feof(file_name)){
printf("%4.d ", cnt_file_number++);
str = fgets( temp, sizeof(temp), file_name);
if(strcmp(str, "\0") == 0 ) break;
printf("%s", str);
}
fclose(file_name);

最佳答案

如果遇到错误,fgets 将返回空指针。您正在立即使用 str 而不检查它。更好的方法是这样的

while(fgets(temp, sizeof(temp), file_name) {
// your printing code but using temp instead of str
}

由于 fgets 返回 temp 或 null,因此您不需要额外的 str 指针,如果由于 EOF 而它为 null,则循环将正确终止。

此外,在循环条件中检查 feof 不会完成这项工作,因为一次读取多个字符,并且 EOF 可能不是下一个字符,而是在接下来的几个字符中。

编辑:哦,抱歉。我读错了。您实际上是在检查 str 是否为空,但正如其他人在评论中指出的那样,有更好的方法来做到这一点。也许这甚至可以解决问题。

关于c - 当我执行 cat -b 函数时出现段错误错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55888164/

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