私はこの第2のコマンドライン引数で指定されたテキストファイルの文字を数えることを目的としたこのシンプルなCプログラムを作成します。 私が直面している問題は、fseekが関数 "Counter"内で無限ループ(while(!feof(fp)))を持つ結果を返さないことを示しています.fseekをfgetcに置き換えても、プログラムは正常に動作します。 fseekに何が間違っているのでしょうか。 ありがとうございます。Fseekはストリームのファイル位置をCに設定していません
#include <stdio.h>
int Counter (FILE * fp);
int main(int argc, char* argv[])
{
int cntr;
FILE * fpc;
fpc = fopen(argv[1],"r");
cntr = Counter(fpc);
fclose(fpc);
printf("%i\n",cntr);
}
int Counter (FILE * fp)
{
int cntr = 0;
while (!feof(fp))
{
cntr++;
fseek(fp,1,1);
}
return cntr;
}
1の代わりに定数「SEEK_CUR」を使用すると、コードが明確になります。 – Matthieu
私は同じ結果でそれを使用しました – Spyreto
[なぜwhile(!feof(file))はいつも間違っていますか?](http://stackoverflow.com/questions/5431941/why-is-while-feof-file-常に間違っている)。 –