2011-10-01 4 views
6

可能性の重複:Cのストリームの次の文字を見る方法は?


C equivalent to fstream's peek

は、私はそれの文字を含むファイルを持っていると言います。私は次のキャラクターがポインタを動かさずに、それを "ピーク"にすることを見たいと思っています。それをどうやってやるの?

FILE *fp; 
char c, d; 

fp = fopen (file, "r"); 

c = getc(fp); 

d = nextchar? 

次に実際にgetcを呼び出してポインタを移動することなく、次に来る文字を見ますか?

+3

: [1] [C++さんのfstream ::のぞくと同等] [1]:http://stackoverflow.com/questions/2082743/c-equivalent-to-fstreams-peek – Baltasarq

+1

これは重複していますが、なぜdownvoteですか?正当な質問です.Cライブラリを見るだけでは完全には分かりません。 –

+0

ねえ、それは私ではありませんでした! – Baltasarq

答えて

8

getc()を使用して次の文字を取得し、その後にungetc()を呼び出すことができます。

更新:ファイルの末尾を覗き見ることができるラッパーの@Jonathanのコメントを参照してください(その場合はEOFを返します)。

アップデート2:ややコンパクト版:あなたはこの質問に見てみることができます

int fpeek(FILE * const fp) 
{ 
    const int c = getc(fp); 
    return c == EOF ? EOF : ungetc(c, fp); 
} 
+0

@JonathanLeffler:はい。私は「次のキャラクターを見る」とは、**次のキャラクターが**あることを意味すると想定していました。それが確実でない場合は、追加チェックが必要です。 –

関連する問題