gpt4 book ai didi

c - 使用fgetc逐行读取不起作用

转载 作者:行者123 更新时间:2023-11-30 16:48:37 28 4
gpt4 key购买 nike

我需要从文件中逐行读取这是我的代码:

FILE *fp1;
char c;
int n = 500;
int counter = 0 ;
char *buffer;
buffer = (char*) realloc(buffer, n);
strcpy(buffer, "");
fp1 = fopen("text.txt","r");

if(fp1 == NULL)
{
perror("Error in opening file");
return;
}

do
{
c = fgetc(fp1);
//My specification .. stop reading if you read E
if( c == 'E' )
{
break ;
}
if (c == '\n') {
printf("%s\n", buffer);
counter=0;
strcpy(buffer, "");
}
else{
counter++;
/*handling overflow*/
if (counter > n) {
n+=100;
buffer = (char*) realloc(buffer, n);
}
strncat(buffer, &c,1);

}
}while(!feof (fp1));

问题是代码无法正常工作,它打印的行数比原始文本文件多。有人可以帮忙找出原因吗?

附注我知道 getc() 有替代方案,但我需要使用它。

更新
我将缓冲区的初始化从原来的更改为:

 char *buffer = NULL;

& 所有其他 strcpy() 到此:

 *buffer = NULL;

但还是同样的问题。

最佳答案

使用 !feof (fp1) 作为外部 while 循环条件。您没有检查文件结尾。

关于c - 使用fgetc逐行读取不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42883481/

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