我的工作是翻译C-> C已安装在Linux发行版上.因此,我希望C和linux具有功能.
我在读取二进制文件时遇到问题.它说它在到达文件的实际结尾之前遇到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
到目前为止尝试过
我的解决方案是使用c在Windows上编译时执行以下操作
在命令提示符下执行
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 error\n");
}
我还尝试了Cygwin,其中有些答案已经解决了.但这也失败了.
StackOverflow答案
当答案所以在这里看,我们看到了Windows,Windows EOF,Binary solution,Binary Mode和Stream data end at byte 26和Reaching EOF early Windows.他们告诉我说:
– Windows键(CTRL Z,^ Z),使得文件的结束
-我必须以二进制格式阅读
解决方法:
我找到了问题的答案.它与您阅读的地方有关.你需要放
_setmode(0,_0_BINARY);
在main()函数中!请记住这一点,否则其他读取或写入将不包括在内.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。