0

スキャナは、100 バイトのデータを入力するまで待機します。そのため、ファイルを実行可能ファイルの入力にリダイレクトする場合、ファイルに 100 バイトを超えるデータが含まれている場合。fgets()またはscanf("%s")などを使用して行ごとにスキャンするのではなく、一度にスキャンします。

4

1 に答える 1

3

fread改行やその他の空白に関係なく、必要なバイト数を読み取るために使用できます。

char buf[100];
size_t bytes_read = fread(buf, 1, 100, stdin);

bufnull で終了しないことに注意してください。したがって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 に答える