5

C で get line 関数を使用して、ファイルの行を読み込んでいます。ファイルを n 回読み込めるように、関数をループしたいと考えています。ただし、何らかの理由で、後続のループの開始時に一度だけ読み取ります (最終行を指しているポインターがどこかにあると思います)。リセットするにはどうすればよいですか?

わかりやすくするために、以下のファイルに 100 行ある場合、最大 val は 100 になるはずですが、最大 300 になるはずです。

ありがとう!

FILE* fp = myfopen (inf, "r");
char* line = NULL;
size_t len = 0;

int num=3
int val=0

for (i=0;i<num;i++)
{
    while (getline (&line, &len, fp) != -1)
    {  
        val++;   
    }
}
4

2 に答える 2

7

ファイルの終わりを過ぎて読んだら、呼び出す必要があります

rewind(fp);

ストリームの先頭から再び開始します。

于 2013-01-28T21:50:57.223 に答える
0

前述のように、rewind()関数を使用して最初からやり直すことができますが、他のオプションはもちろん、ファイルの開閉をループに移動することです。

FILE* fp; = myfopen (inf, "r");

for (i=0;i<num;i++)
{
    fp = myfopen(inf, "r");
    while (getline (&line, &len, fp) != -1)
    {  
        val++;   
    }
    fclose(fp);
}
于 2013-01-28T22:23:29.070 に答える