我正在尝试在运行时通过输入重定向(stdin
)读取一个大型二进制文件,并且 stdin
是强制要求的。
./a.out < input.bin
目前我使用的是fgets。但是fgets会跳过空格和换行符。我想同时包括它们。我的currentBuffersize
大小可能会动态变化。
FILE * inputFileStream = stdin;
int currentPos = INIT_BUFFER_SIZE;
int currentBufferSize = 24; // opt
unsigned short int count = 0; // As Max number of packets 30,000/65,536
while (!feof(inputFileStream)) {
char buf[INIT_BUFFER_SIZE]; // size of byte
fgets(buf, sizeof(buf), inputFileStream);
cout<<buf;
cout<<endl;
}
感谢您的提前帮助。
fread
用于未经处理的输入。而fgets
则进行文本处理。不要忽略返回值,它是存储到缓冲区的有效记录数。 - Ben Voigtcin
进行操作的,所以它与这个问题没有太大关系;其次,那里的答案实际上告诉了你如何做。这个问题只是因为没有阅读 stdio 文档 / 没有在 Google 上搜索 "从 stdin 读取二进制数据" 而导致的失败。 - Jason C