【问题标题】:fputs for writing an EBCDIC character array用于写入 EBCDIC 字符数组的 fputs
【发布时间】:2013-09-16 21:58:04
【问题描述】:

如果我有一个 EBCDIC 格式的字符数组,并且我想将该数组保存到一个文件中。我正在考虑使用fputs 来输出字符数组,而无需先将其转换为另一种格式。

问题) 使用fputs 编写EBCDIC 是否合法?如果不是,我应该在输出之前将字符串转换为 ASCII 吗?

我在网上搜索过,但找不到任何可以说的 fputs 不应用于输出 EBCDIC 数据。

【问题讨论】:

    标签: c fgets stdio fputs


    【解决方案1】:

    如果您的 EBCDIC 格式的字符数组是 c 风格的字符串,并且以 \0 字节结尾,那么没有问题。

    fputs(),在二进制模式下,除了不写入\0之外,与格式无关。

    假设您的程序是使用 ASCII 字符集编写的,您的输出文件必须以二进制模式打开(例如“wb”),否则 C 的 \n 在 EBCDIC 和某些翻译中将不匹配是可能的。

    另一方面,除了写入和回读之外,您还打算对这个文件做些什么吗?


    如果您的“EBCDIC 格式的字符数组”不是以\0 结尾或没有嵌入\0 字节,建议您简单使用fwrite()。再次确保在二进制模式下使用,除非您的整个系统都是 EBCDIC。

    【讨论】:

    • 应用程序除了写入 EBCDIC 数据外不会做任何事情。
    【解决方案2】:

    好吧,fputs 接受一个 C 字符串,它使用 ASCII 编码。所以,那是行不通的。我认为您需要使用较低级别的函数编写文件。也许使用fwrite 直接写入文件而不使用字符串。这是man page on fwrite

    【讨论】:

    • “C”标准没有说明字符串的编码。对“C”运行时间唯一重要的是字符串末尾的 nul 终止符。
    • @JonTrauntvein: ... 和换行符,如果需要以平台相关的方式(即 Windows)进行翻译。
    猜你喜欢
    • 2011-01-14
    • 2021-11-06
    • 2019-01-18
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多