スキャナは、100 バイトのデータを入力するまで待機します。そのため、ファイルを実行可能ファイルの入力にリダイレクトする場合、ファイルに 100 バイトを超えるデータが含まれている場合。fgets()
またはscanf("%s")
などを使用して行ごとにスキャンするのではなく、一度にスキャンします。
質問する
145 次
1 に答える
3
fread
改行やその他の空白に関係なく、必要なバイト数を読み取るために使用できます。
char buf[100];
size_t bytes_read = fread(buf, 1, 100, stdin);
buf
null で終了しないことに注意してください。したがってprintf
、たとえば(ヌルで終了する文字列が必要な場合)必要な場合は、次のことを試すことができます。
char buf[101];
size_t bytes_read = fread(buf, 1, 100, stdin);
buf[100] = '\0'; // The 101th "cell" of buf will be
// the one at index `100` since the
// first one is at index `0`.
于 2012-12-10T20:03:27.470 に答える