如何获取读取字节数

时间:2011-04-13 11:59:08

标签: c numbers stdin fread

当我从这样的stdin读取时:

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读取的字节数?

3 个答案:

答案 0 :(得分:2)

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

您正在尝试阅读bufSize元素,每个元素的大小为sizeof(char) - 而不是一个大小为bufSize * sizeof(char)的元素 - 因此您的fread调用应该反映出来

答案 1 :(得分:1)

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

fread读取给定大小的块并返回成功读取块的数量。 如果要返回读取的字节数,则将blocksize设置为1,将块数设置为要读取的字节数:

readNum = fread(inputBuffer, 1, sizeof(unsigned char) * bufSize, stdin);

答案 2 :(得分:0)

readNum = fread(inputBuffer, 1, sizeof(unsigned char)*bufSize, stdin);