Cで10進整数を構成する一連の文字を読み取る必要があるとしますが、fscanf()
は使用できません。プログラムは以下のオクテットでテストされます。CのFILE *記述子で文字を安全にアンロックする方法
0x31 0x35 0x30 0x0a
または単に:
150\n
はどのようにあなただけの最初の3つのバイトが抽出されていることを確認していますか?つまり、fgetc()
への今後の電話は、0x0a
を返さなければなりません。これは、fscanf("%d")
を使用し、次にfgetc()
を使用した場合とまったく同じ動作になります。
は、なぜあなたは彼らが実際にはないと仮定しますか? –
C++では、バッファ内の次の文字で[peek](http://en.cppreference.com/w/cpp/io/basic_istream/peek)を実行できます。また、[最後に読み込んだ文字を取り除く](http://en.cppreference.com/w/cpp/io/basic_istream/unget)、[他の文字を戻す](http://en.cppreference。 co.jp/w/cpp/io/basic_istream/putback)。 –
@πάνταῥεῖもし 'scanf("%d "、&x)'と 'c = getchar()'の入力が '150 \ n'なら' x'は150を、 'c'は' 0x0a'を保持します。 ..私のコンピュータでは、少なくとも。 – matheuscscp