c/c++ txt文件读写换行

用c/c++写字符串到文本文件.在程序中用伟大的"\r\n"换行写入文本文件.用xp自带的记事本打开该文件后,显示正常,该换行的地方都正确.但是用记事本一编辑就出乱了,所... 用c/c++写字符串到文本文件.
在程序中用伟大的"\r\n"换行写入文本文件. 用xp自带的记事本打开该文件后,显示正常,该换行的地方都正确. 但是用记事本一编辑就出乱了,所有的换行都消失了.如何改程序使之保持正常换行
谢谢两位
conanwj1980 老兄;
我用的是CString;
CStdioFile file;
用CArchive ar;
ar.WriteString()写入的;
有没有很好的办法兼容其它文本编辑器改写而换行格式不出乱?
展开
 我来答
conanwj1980
推荐于2016-05-11 · TA获得超过438个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:79.2万
展开全部
"\r\n"其实是回车和换行两个字符
"\n"是 New line,换行。
"\r"是 Carriage return,回车。
在Mac系统中的文本换行只用"\r",在Unix系统中只用"\n",在我们最常用的Windows系统中是"\r\n"。
楼主的写法会受到程序的字符集影响。如果是MBCS字符集中,"\n"就可以进行文本换行,"\r\n"在某些文本编辑器中会转换成两个换行符。
Windows自带的记事本对于换行符的识别能力很弱,你用程序写入"\r\n"进行换行,但直接在记事本中回车就只添加了"\n",再次打开时很容易出错的。

解决方法:
建议你用MFC的CString类存储字符串,并在写入时用str=_T("Test.\n");的写法。对文本文件的写入用CStdioFile类的WriteString函数,它可以实现对不同字符集的回车转换。
如果程序字符集是Unicode的话,别忘记在文本文件头部加入BOM头。具体请参阅MSDN
许诗文00
推荐于2016-10-12 · TA获得超过4290个赞
知道小有建树答主
回答量:425
采纳率:100%
帮助的人:26.3万
展开全部
"\r\n"其实是回车和换行两个字符 "\n"是 New line,换行。 "\r"是 Carriage return,回车。 在Mac系统中的文本换行只用"\r",在Unix系统中只用"\n",在我们最常用的Windows系统中是"\r\n"。 楼主的写法会受到程序的字符集影响。如果是MBCS字符集中,"\n"就可以进行文本换行,"\r\n"在某些文本编辑器中会转换成两个换行符。 Windows自带的记事本对于换行符的识别能力很弱,你用程序写入"\r\n"进行换行,但直接在记事本中回车就只添加了"\n",再次打开时很容易出错的。
解决方法: 建议你用MFC的CString类存储字符串,并在写入时用str=_T("Test.\n");的写法。对文本文件的写入用CStdioFile类的WriteString函数,它可以实现对不同字符集的回车转换。 如果程序字符集是Unicode的话,别忘记在文本文件头部加入BOM头。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lfm13720
2008-08-27 · TA获得超过1102个赞
知道小有建树答主
回答量:896
采纳率:0%
帮助的人:0
展开全部
文本文件操作中,换行只用'\n'就可以了,程序会自动加上'\r',如果你不信,可以试试下面的程序:

#include <stdio.h>

void main()
{
char data[3];
FILE *pF;
data[0]='a';
data[1]='\n';
data[2]='b';
pF=fopen("1.txt","w");
fwrite(data,1,3,pF);
fclose(pF);
}

编译之后运行,用记事本打开工程目录下生成的1.txt看看,是不是 a,b 和换行都有,而且这里只写入了3个字节,而生成的1.txt有4个字节。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2008-08-27
展开全部
改用fputs()函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式