从标准输入stdin读取二进制数据

C/C++提供的标准输入stdin默认是以"r"模式打开的,在Linux下由于"r"和"rb"效果相同,因此不会受到影响。在Windows下,"r"意味着文本模式,\r\n会被转换成\n,而且遇到EOF就会停止。

因此为了从标准输入读取二进制数据,需要向程序中添加以下代码:

#include <io.h>
#include <fcntl.h>

int main()
{
    _setmode(_fileno(stdin), _O_BINARY);

这段代码使用了fcntl.h中的_setmode函数将stdin模式设置为二进制模式。

另外据说还有一种 freopen(NULL,"rb",stdin) 的写法,但根据我的测试并没有效果,不推荐使用。

需要注意的是,一旦设置成了二进制模式,换行符的自动转换将不会被进行。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页