【发布时间】:2013-09-16 21:58:04
【问题描述】:
如果我有一个 EBCDIC 格式的字符数组,并且我想将该数组保存到一个文件中。我正在考虑使用fputs 来输出字符数组,而无需先将其转换为另一种格式。
问题) 使用fputs 编写EBCDIC 是否合法?如果不是,我应该在输出之前将字符串转换为 ASCII 吗?
我在网上搜索过,但找不到任何可以说的 fputs 不应用于输出 EBCDIC 数据。
【问题讨论】:
如果我有一个 EBCDIC 格式的字符数组,并且我想将该数组保存到一个文件中。我正在考虑使用fputs 来输出字符数组,而无需先将其转换为另一种格式。
问题) 使用fputs 编写EBCDIC 是否合法?如果不是,我应该在输出之前将字符串转换为 ASCII 吗?
我在网上搜索过,但找不到任何可以说的 fputs 不应用于输出 EBCDIC 数据。
【问题讨论】:
如果您的 EBCDIC 格式的字符数组是 c 风格的字符串,并且以 \0 字节结尾,那么没有问题。
fputs(),在二进制模式下,除了不写入\0之外,与格式无关。
假设您的程序是使用 ASCII 字符集编写的,您的输出文件必须以二进制模式打开(例如“wb”),否则 C 的 \n 在 EBCDIC 和某些翻译中将不匹配是可能的。
另一方面,除了写入和回读之外,您还打算对这个文件做些什么吗?
如果您的“EBCDIC 格式的字符数组”不是以\0 结尾或没有嵌入\0 字节,建议您简单使用fwrite()。再次确保在二进制模式下使用,除非您的整个系统都是 EBCDIC。
【讨论】:
好吧,fputs 接受一个 C 字符串,它使用 ASCII 编码。所以,那是行不通的。我认为您需要使用较低级别的函数编写文件。也许使用fwrite 直接写入文件而不使用字符串。这是man page on fwrite。
【讨论】: