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 时从标准输入读取字节?

4

3 回答 3

3

采用readNum = fread(inputBuffer, sizeof(unsigned char), bufSize, stdin);

您正在尝试读取bufSize元素,每个元素都有一个大小sizeof(char)- 而不是一个元素的大小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 回答