防止 Windows 程序将 ^Z 解释为文件结尾

2024-03-12

我的工作是翻译一个从 C 到 C++ 的应用程序,该应用程序已安装在 Linux 发行版上。所以我希望 C 和 Linux 的功能。

我在读取二进制文件时遇到问题。它说当它遇到一个时到达EOFctrl-Z到达文件实际末尾之前的字符。

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

问题是程序解释了第一个^Z作为文件末尾。

到目前为止已尝试过

我的解决方案是在 Windows 上编译时执行以下操作c++

在命令提示符下执行

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 https://cygwin.com/其中一些答案是我的。但这也失败了。

StackOverflow 答案

当在 SO 中查看答案时,我们看到Windows https://stackoverflow.com/questions/15034012/ifstream-eof-end-of-file-is-reached-before-the-real-end, 视窗文件结束符 https://stackoverflow.com/questions/6258812/why-does-this-stream-of-data-end-at-byte-26, 二元溶液 https://stackoverflow.com/questions/2307057/how-to-read-a-binary-file-in-c-video-images-or-text,二进制模式 https://stackoverflow.com/questions/13268591/using-c-standard-streams-in-binary-mode-through-swig-python-on-mingw and 流数据在字节 26 处结束 https://stackoverflow.com/questions/6258812/why-does-this-stream-of-data-end-at-byte-26?lq=1 and 早期 Windows 达到 EOF https://stackoverflow.com/questions/164002/why-is-fread-reaching-the-eof-early?rq=1。他们告诉我:

- Windows 键(CTRL + Z、^Z)结束文件

- 我必须以二进制格式读取


我找到了我的问题的答案。这与你阅读的位置有关。你需要把

_setmode(0,_0_BINARY);

在 main() 函数中!!!!!!!!!请记住这一点,否则其他读取或写入将不会被包括在内。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 Windows 程序将 ^Z 解释为文件结尾 的相关文章

随机推荐

  • pandas DataFrame 中 x 天每个元素的累积乘积

    我尝试计算 a 中的每个元素Dataframe df1累计积超过x天 例如 3 有没有有效的方法来做到这一点 到目前为止 我只知道在行上生成正常的累积乘积 而不将回溯期固定为x days df2 例如 2022 01 02 ID1 1 05
  • 如何在 C# 中获取活动进程名称?

    如何在 C 中获取活动进程名称 我知道我必须使用这段代码 DllImport user32 dll private static extern IntPtr GetForegroundWindow 但我不知道如何使用它 正如中提到的这个答案
  • 是否可以选择 Windows 表单标签上的文本?

    是否可以突出显示 选择 Windows 窗体标签控件中的部分文本 我知道使用 RTFtextbox 控件是可能的 但使用该控件会有点矫枉过正 因为我需要创建许多标签实例 是否可以选择 Windows 表单标签上的文本 否 至少没有简单的方法
  • 如何总结组合列表

    我有一个包含 2 个元素组合的列表 如下所示 cbnl lt list c A B c B A c C D c E D c F G c H I c J K c I H c K J c G F c D C c E C c D E c C E
  • 使用消息驱动通道适配器和服务激活器进行事务处理

    我正在开发一个 POC 它执行以下操作 使用消息驱动的通道适配器来接收事务中的消息 调用服务激活器 该激活器使用处理程序将从适配器接收到的消息插入到数据库 并将消息发布到出站通道 现在 如果消息的数据库插入失败 我希望 JMS 消息返回到队
  • OpenSSL 使用固定值来生成 Diffie Hellman 密钥

    根据该文件 https wiki openssl org index php Diffie Hellman Using the Low Level APIs https wiki openssl org index php Diffie H
  • xcodebuild 使用哪个版本的 Xcode?

    我在同一台机器上安装了 Xcode 3 2 和 Xcode 4 0 2 它使用 Hudson 进行自动化 CI 持续集成 构建 当我说两者都已安装时 我的意思是我可以同时或交替使用 Xcode 3 和 Xcode 4 它们都存在于机器上 因
  • C++:有效但未指定的状态。这是什么意思? [复制]

    这个问题在这里已经有答案了 我一直在尝试理解 std move This http www cplusplus com reference utility move doc描述得很好 但它在示例部分中说 而 bar 失去了它的值 现在处于有
  • 如何将值注入 TensorFlow 图的中间?

    考虑以下代码 x tf placeholder tf float32 name x z x tf constant 5 0 y tf mul z tf constant 0 5 with tf Session as sess print s
  • jQuery Ajax 请求每 30 秒一次

    我有这段代码 但当有人访问我的网站时 这些值可能会发生变化 我需要每 30 秒左右更新一次 finance div 这可以做到吗 function getJSON http query yahooapis com v1 public yql
  • 输入字符串 1 无效 UTF-8 Shiny 应用程序

    我正在尝试创建一个闪亮的应用程序并不断收到错误Warning Error in sub input string 1 is invalid UTF 8这阻止了我的selectInput从出现 我尝试过使用utf8包将字符串转换为有效的 UT
  • 将一台机器中一个节点的elasticsearch索引移动到同一台机器的另一个驱动器

    我的机器中有一个 elasticsearch 节点 配有 150gb SSD 和 3 TB HDD 由于 SSD 空间不足 我想将一个索引从 SSD 移动到 HDD 这可能吗 如果是这样怎么办 我可以在硬盘上创建另一个节点 但我宁愿在机器上
  • 获取 Woocommerce 订阅的订阅产品作者

    如何遍历所有当前活跃的 woo 订阅并打印发布与每个活跃订阅 PHP 相关的产品的用户的用户 ID 我认为这样的东西只会提供订阅 args array subscriptions per page gt 1 post type gt sho
  • Matlab:使用互协方差对齐数据

    我想获得 Matlab 中两个数据集之间样本的偏移量 让它们及时同步 这是一个很常见的问题 因此 我使用互相关函数 xcorr 或互协方差函数 xcov 在大多数情况下 两者都为此目的提供类似的结果 对于人工数据 它工作得很好 但我在处理
  • Chai-As-Promised 正在吃断言错误

    我在用着柴如许诺 mocha为了写一些硒网络驱动程序测试 由于 webdriver 广泛使用promises 我想如果我使用 chai as promised 进行此类测试会更好 问题是 当测试失败时 mocha 没有正确捕获错误 它只是失
  • 有没有办法检查一个列表的所有元素是否都包含在球拍的另一个列表中?

    我想要一个执行类似操作的函数 gt function 1 2 3 4 1 2 3 4 5 t 在这种情况下返回 t 因为第一个列表的所有元素都包含在第二个列表中 有没有一个函数可以做到这一点而不必担心顺序 在这种情况下 您不会将列表进行比较
  • 如何以百分比形式设置 Ext.grid.ColumnModel 中的宽度?

    如何设置宽度Ext grid ColumnModel以百分比计算 使用总共 100 的列宽数字并使用 ForceFit 配置视图 例如 var grid new Ext grid GridPanel cm new Ext grid Colu
  • 我需要事务来进行连接查询吗?

    在带有连接的sql查询期间 我需要使用事务吗 我在想这样的事情 Delete table1 table2 table3 FROM table1 INNER JOIN table2 ON LEFT JOIN table3 ON WHERE t
  • 正则表达式获取捕获组的大小

    是否可以编写一个正则表达式 以便我可以稍后在同一正则表达式中引用 第一个捕获组的长度 我在这里想要实现的是捕获连续发生的情况1后面跟着连续出现的确切次数2 s 我想要类似的东西 r 1 2 length 1 where length 1 s
  • 防止 Windows 程序将 ^Z 解释为文件结尾

    我的工作是翻译一个从 C 到 C 的应用程序 该应用程序已安装在 Linux 发行版上 所以我希望 C 和 Linux 的功能 我在读取二进制文件时遇到问题 它说当它遇到一个时到达EOFctrl Z到达文件实际末尾之前的字符 bash 中宝