当我从这样的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读取的字节数?
答案 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);