gpt4 book ai didi

c - 为什么这个 while 条件没有捕获 EOF?我遇到段错误

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

所以问题是,我尝试使用 fgets 从文本中读取一行并将其打印出来,但它工作得不太好,它完美地读取了所有文件直到最后,但它读取了最后一行两次并比“大喊”段错误。

void somefun(FILE *file){
char *buf[81];

while(!feof(file)){
if(fgets(buf,80,file)){
continue;}
printf("%s,buf); }

void main() {
FILE *fp;
fp=fopen("somefile.txt","r+");
somefun(fp); }

最佳答案

根本不需要使用feof()

它可能看起来像这样:

#include <stdio.h>

void somefun(FILE* file) {
char buf[80];

while (NULL != fgets(buf, 80, file)) {
printf("%s", buf);
}

if (ferror(file)) {
fprintf(stderr, "fgets() failed\n");
}
}

int main(void) {
FILE *fp = fopen("somefile.txt", "r+");
if (NULL == fp) {
fprintf(stderr, "fopen() failed\n");
}
else {
somefun(fp);
}
}

关于c - 为什么这个 while 条件没有捕获 EOF?我遇到段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57334685/

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