c/c++ txt文件读写换行
用c/c++写字符串到文本文件.在程序中用伟大的"\r\n"换行写入文本文件.用xp自带的记事本打开该文件后,显示正常,该换行的地方都正确.但是用记事本一编辑就出乱了,所...
用c/c++写字符串到文本文件.
在程序中用伟大的"\r\n"换行写入文本文件. 用xp自带的记事本打开该文件后,显示正常,该换行的地方都正确. 但是用记事本一编辑就出乱了,所有的换行都消失了.如何改程序使之保持正常换行
谢谢两位
conanwj1980 老兄;
我用的是CString;
CStdioFile file;
用CArchive ar;
ar.WriteString()写入的;
有没有很好的办法兼容其它文本编辑器改写而换行格式不出乱? 展开
在程序中用伟大的"\r\n"换行写入文本文件. 用xp自带的记事本打开该文件后,显示正常,该换行的地方都正确. 但是用记事本一编辑就出乱了,所有的换行都消失了.如何改程序使之保持正常换行
谢谢两位
conanwj1980 老兄;
我用的是CString;
CStdioFile file;
用CArchive ar;
ar.WriteString()写入的;
有没有很好的办法兼容其它文本编辑器改写而换行格式不出乱? 展开
4个回答
展开全部
"\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
"\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
展开全部
"\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头。
解决方法: 建议你用MFC的CString类存储字符串,并在写入时用str=_T("Test.\n");的写法。对文本文件的写入用CStdioFile类的WriteString函数,它可以实现对不同字符集的回车转换。 如果程序字符集是Unicode的话,别忘记在文本文件头部加入BOM头。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
文本文件操作中,换行只用'\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个字节。
#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()函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询