1

次のように標準入力から読み取ると:

size_t bufSize = 1024;
unsigned char inputBuffer[bufSize];
size_t readNum = 0;
readNum = fread(inputBuffer, sizeof(unsigned char) * bufSize, 1, stdin);

readNum にはオブジェクトの数が格納されています。これは、stdin 1024 バイトから読み取ると、readNum の値が 1 になることを意味します。しかし、stdin < 1024 バイトから読み取ると、readNum の値は 0 になります。バイト数が 1024 未満のときに stdin から読み取られましたか?

4

3 に答える 3

3

使用するreadNum = fread(inputBuffer, sizeof(unsigned char), bufSize, stdin);

bufSizeそれぞれのサイズの要素を読み込もうとしていますsizeof(char)-サイズの1つの要素ではありませんbufSize * sizeof(char)-fread呼び出しはそれを反映する必要があります。

于 2011-04-13T12:06:13.817 に答える
1
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

fread は指定されたサイズのブロックを読み取り、正常に読み取られたブロックの数を返します。読み取ったバイト数を返したい場合は、ブロックサイズを 1 に設定し、ブロック数を読み取りたいバイト数に設定します。

readNum = fread(inputBuffer, 1, sizeof(unsigned char) * bufSize, stdin);
于 2011-04-13T12:04:35.167 に答える
0
readNum = fread(inputBuffer, 1, sizeof(unsigned char)*bufSize, stdin);
于 2011-04-13T12:05:08.797 に答える