我的工作是翻译一个已经安装在linux发行版上的C – > C ++应用程序,所以我希望C和linux的function完全相同。
我有一个阅读二进制文件的问题。 它表示在到达文件的实际末尾之前,遇到ctrl-Z字符时它会到达EOF。
珍惜执行在bash
zcat file.txt.gz | txtToBinary | binaryToOutput
在命令提示符下执行
txtToBinary.exe < file.txt | binaryToOutput.exe
原始文本文件
R 5643BYIDK DK0016060346 11DKKXKLY 160 1 R 10669VJK 98 1 IS0000004018 4ISKXICE 240 5000000 M814
txtToBinary.exe – 示例输出:
^@^@^@ hello ^@ ^Z^@^@^@^@ ^@^@^[SWMA ^Y^YC
尝试到目前为止
我的解决scheme一直在使用c ++编译窗口时执行以下操作
在C ++编译的C库中如何处理运行时错误?
在Windows上自动启动mongos
对于Windows窗体,PostMessage等于自己的什么?
用于.NET的蓬松云configuration
Windows上这四种不同types的Python shebangs有什么区别?
在命令提示符下执行
txtToBinary.exe < file.txt | binaryToOutput.exe
int main(int argc,char* argv []){ int loop (args_t* args){ for (;;){ char data [1024]; int temp = read_msg (data,sizeof (data)); } int read_msg(void* data,int size){ _setmode(_fileno(stdin),_O_BINARY); _setmode(0,_0_BINARY); if(fread(((unsigned char *)data)+sizeof(*hdr),hdr->size-sizeof (*hdr),1,stdin) != 1); if(feof(stdin)) printf("End of file errorn"); }
我也尝试了Cygwin ,其中一些答案有我。 但是那也失败了。
StackOverflow答案
当在这里查看答案时,我们看到Windows , Windows EOF , 二进制解决scheme , 二进制模式和stream数据在字节26处结束,在 Windows早期达到EOF 。 他们告诉我:
– Windows键(CTRL + Z,^ Z)结束文件
– 我必须以二进制格式读取
由于WToolkit.shutdown()没有完成,挂起我们的Java 6应用程序挂起?
如何使用batch file拆分string?
如何在源代码中设置执行程序的优先级?
Apache 2.4.23 PHP7.x Windows 10 x64 php_curl无法正常工作
PHP $ argv限于Windows上的9个参数吗?
我找到了我的问题的答案。 这与你读的地方有关。 你需要放
_setmode(0,_0_BINARY);
在main()函数中!!!!!!!! 记住这一点,否则其他的读取或写入将不会被包括在内。
fread()是stdio的一部分。 你正在做的是打开原始文件为二进制文件,然后做文本模式的标准I / O。
您可以使用read()系统调用来替换现有的fread()调用。 (也就是说,fread()是一个库调用,它执行一些缓冲,最后调用read()。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。