提问人:adch99 提问时间:12/26/2022 最后编辑:starkadch99 更新时间:12/26/2022 访问量:164
如何清除EOF指标?
How to clear the EOF indicator?
问:
我正在阅读 C 语言的文本文件。我需要从当前指针位置找到特定字符 () 的第一次出现,并将指针移动到该位置。我通过读取缓冲区,然后使用来查找字符来做到这一点。然后我寻找角色的位置。问题是,如果我将文件读入缓冲区,它将设置 EOF 指示器。即使我寻求回到字符的位置,EOF 指示器还是设置好了,并且会扰乱代码其余部分的错误处理。那么,如何确保当我在文件内容中查找时,EOF设置为false?'('
strchr
int io_read_until_char(char stopchar, FILE * ifile)
{
char row[MAXCHAR];
int offset, read_len;
char * loc = NULL;
while (!feof(ifile))
{
if(fgets(row, MAXCHAR, ifile) == NULL)
{
strerror(errno);
break;
}
read_len = strlen(row);
loc = strchr(row, stopchar);
if(loc == NULL)
continue;
else
{
offset = -read_len + (int)(loc - row);
fseek(ifile, offset, SEEK_CUR);
break;
}
}
if(feof(ifile) && loc == NULL)
{
return(-1);
}
else if(ferror(ifile))
{
perror("Error in parsing stuff!\n");
strerror(errno);
return(-1);
}
else
return(0);
}
答:
上一个:如何在 MAUI 中捆绑文件?
评论
fgets
while ( fgets(row, MAXCHAR, ifile) != NULL )
perror
。strerror(errno);
fprintf( stderr, strerror(errno) );