c - 用于写入 EBCDIC 字符数组的 fputs

标签 c fgets stdio fputs

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

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

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

最佳答案

如果您的 EBCDIC 格式的字符数组是一个以 \0 字节结尾的 c 风格字符串,则没有问题。

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

假设您的程序是使用 ASCII 字符集编写的,重要的是您的输出文件以二进制模式打开(例如“wb”),否则 C 的 \n 将与在 EBCDIC 中相同,并且可以进行一些翻译。

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


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

关于c - 用于写入 EBCDIC 字符数组的 fputs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18838006/

相关文章:

c - C语言中逐行读取文本文件

julia - 从 Julia 中捕获和显示输出

c - 存储分隔的字符串

计算数组的大小

c - 段错误(核心转储)C 程序

c - C 中的 struct 'type cast' 错误?

c - fscanf 问题 - 无法从文件中提取字符串

c - 使用 fgets() 检测 EOF,其中 filesteam 是标准输入

c - AVR ATmega 在主循环之前使用 printf 时不断重置

python - 使用 (n)curses 打印到终端的右侧或底部