0

次のような単純な C コード スニペットがあります。

#include <stdio.h>
void main() {
  FILE *f;
  char c;
  f = popen("ls", "r");
  while ((c = fgetc(f)) != EOF) {
    //Some tasks
  }
  rewind(f);
  while ((c = fgetc(f)) != EOF) {
    printf("%c", c);
  }
  fclose(f);
}

コードが何も出力しない理由がわかりません。rewind() 関数が機能しないようです。私が間違っている場所を見つけるのを手伝ってください。ありがとう。

4

1 に答える 1

8

rewindfseek(stream, 0L, SEEK_SET)ストリームではなく、ファイルでのみ有効です (これfseekはパイプの場合です)。

それがあるべきであることを確認しerrnoてくださいrewind

EBADF 指定されたストリームはシーク可能なストリームではありません。

于 2013-10-22T16:51:54.207 に答える