用于编写EBCDIC字符数组的fput

时间:2013-09-16 21:58:04

标签: c fgets stdio fputs

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

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

我在线搜索,但找不到任何说法fputs不应该用于输出EBCDIC数据。

2 个答案:

答案 0 :(得分:2)

如果你的EBCDIC格式的字符数组是一个c样式字符串,那么结尾有一个\0字节,那就没问题了。

在二进制模式下,

fputs()与格式无关,除了不写\0之外。

假设您的程序是使用ASCII字符集编写的,那么输出文件以二进制模式打开(例如“wb”)非常重要,否则C的\n与EBCDIC中的\0不匹配一些翻译是可能的。

另一方面,除了写作之外,你打算用这个文件做些什么,也许可以回读一下吗?


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

答案 1 :(得分:0)

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