gpt4 book ai didi

c++ - 以二进制和文本模式编写的文件之间的区别

转载 作者:IT老高 更新时间:2023-10-28 13:58:28 25 4
gpt4 key购买 nike

当写入以文本模式打开但不以二进制模式发生的文件时,会发生什么转换?特别是在 MS Visual C 中。

unsigned char buffer[256];
for (int i = 0; i < 256; i++) buffer[i]=i;
int size = 1;
int count = 256;

二进制模式:

FILE *fp_binary = fopen(filename, "wb");
fwrite(buffer, size, count, fp_binary);

与文本模式:

FILE *fp_text = fopen(filename, "wt");
fwrite(buffer, size, count, fp_text);

最佳答案

我相信大多数平台在处理流时都会忽略“t”选项或“text-mode”选项。但是,在 Windows 上,情况并非如此。如果您查看 fopen() 函数的描述,请参见:MSDN ,您将看到指定“t”选项将产生以下效果:

  • 换行符 ('\n') 将在输出时转换为 '\r\n"序列
  • 回车/换行序列将在输入时转换为换行。
  • 如果文件以追加模式打开,将检查文件末尾是否有 ctrl-z 字符(字符 26),如果可能,删除该字符。它还将将该字符的存在解释为文件的结尾。这是 CPM 时代的不幸遗留物(关于 parent 的罪孽被探视到他们的 child 直到第三或第四代)。与之前的观点相反,不会附加 ctrl-z 字符。

关于c++ - 以二进制和文本模式编写的文件之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/229924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com