我正在读取一个文本文件,用while(!feof)循环迭代,但每当我使用这个条件时,循环会迭代一个额外的时间.
我用这个'补丁'代码解决了这个问题
while (stop == FALSE)
{
...
terminator = fgetc(input);
if (terminator == EOF)
stop = TRUE;
else
fseek(input, -1, SEEK_CUR);
}
Run Code Online (Sandbox Code Playgroud)
但它看起来和感觉非常糟糕.
您可以利用以下事实:将赋值分配为要分配的值,在本例中为要读取的字符:
while((terminator = fgetc(input))!= EOF) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
这是一个惯用的例子(来源):
fp = fopen("datafile.txt", "r"); // error check this!
// this while-statement assigns into c, and then checks against EOF:
while((c = fgetc(fp)) != EOF) {
/* ... */
}
fclose(fp);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |