gpt4 book ai didi

c++ - 向文件中插入文本(未输入结束行)

转载 作者:太空狗 更新时间:2023-10-29 23:06:52 26 4
gpt4 key购买 nike

我有一个奇怪的问题:

我将文件读入 buf 并尝试在 ssh (Linux) 中运行它..

我的文件包含:

We 
I
a

所以这是我的缓冲区:

enter image description here

现在我创建一个新文件并将 buf 粘贴到这个新文件中:

FILE*nem_file_name;
nem_file_name= fopen("email1.clear","wb"); //create the file if not exist.
fwrite (buf, sizeof(char), strlen(buf),nem_file_name); //write the new sensored mail to the file.

在这种情况下,文件:email1.clear 已创建,但这是它包含的内容:我们是

当我把它复制到剪贴板并粘贴到这个主题时,它是这样粘贴的:

We 
I
a

为什么我的文件中没有“结束行”?我希望它像我剪贴板中的一样:/

更新我尝试通过以下方式手动创建 buf:

char buf[10];
buf[0] = 'W';
buf[1] = 'e';
buf[2] = 32;
buf[3] = 13;
buf[4] = 10;
buf[5] = 'I';
buf[6] = 13;
buf[7] = 10;
buf[8] = 'a';
buf[9] = 0;

(请注意,我没有将文件读入buf,而是手动执行)

然后:

FILE*nem_file_name;
nem_file_name= fopen("email1.clear","wb"); //create the file if not exist.
fwrite (buf, sizeof(char), strlen(buf),nem_file_name);

并且文件 email1.clear 已按照我的意愿创建:

We
I
a

我听不懂!

最佳答案

调试器屏幕截图实际上来自您的 linux 环境吗?还是您是在 Windows 调试器上创建的?

这取决于你如何阅读原始文件。如果您正在使用文本模式(rrtfopen 调用中),Linux 会将 CRLF (13,10) 转换为阅读期间的单个 LF (10) 字符。当以二进制模式(wb 在您的代码中)将其写入新文件时,它将保持单个 LF。

记事本不能将单个 LF 字符作为换行符处理,但是,您的网络浏览器显然可以。

更新:
不同的操作系统对行尾字符的处理方式不同。当以文本模式打开文件时,差异在读/写期间处理并转换为/从系统模式。在二进制模式下,字节按原样读取和写入,无需转换 ( fopen documentation )。

这取决于程序应该在哪里运行以及哪些客户端应该读取输出 (Linux/Windows)。当您的代码在 linux 上运行时,从 linux 读取文本文件并生成要在 linux 中使用的文本文件,请使用文本模式(同样适用于 windows)。如果您需要混合平台,您可能需要自己转换行尾。

关于c++ - 向文件中插入文本(未输入结束行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14338340/

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