文件使用二进制模式打开情况下的换行的方法

来源:互联网 发布:社交软件如何盈利 编辑:程序博客网 时间:2024/04/29 03:15

今天用VS2010写个简单的用来记录软件的日志到文件的程序,使用\n

原因:对于文件,在windows平台下的换行是LRCR(“\r\n")(针对WINDOWS的记事本工具来说,若用智能些的文本编辑器,就会换行了),,

 所以在使用二进制模式打开文件,写入的时候,换行请使用\r\n  .

而在文本模式下打开文件写入时, 用\n即可以了,(使用ultraEdit查看file1和file2的二进制,发现file2多了一个\r字符(0x0D), 这就是文本模式的原因了。


对于不同的平台,默认的换行是不一样的。。。

测试代码如下:

#include <stdio.h>#include <string.h>#include <assert.h>#include <Windows.h>int main(){FILE *file1 = fopen("test1.txt","wb");FILE *file2 = fopen("test2.txt","w");assert(file1 && file2);char str[1024] = "this is a test!\nyou know";//再把\n换成\r\n试试int len = strlen(str);int writeLen1 = fwrite(str, 1, len, file1);int writeLen2 = fprintf(file2, str);assert(writeLen1 == len && writeLen2 == len);fclose(file1);fclose(file2);printf("现在请打开test.txt文件看看,里面有没有换行,换任意键继续\n");system("pause");file1 = NULL;file2 = NULL;//现在我们在从文件里读取len个字节输出到控制台//下面的测试可以直接用ultraEdit或者winHex看其16进制是否是这几个字符,特别是'\n'char *str1[1024] = {0};char *str2[1024] = {0};file1 = fopen("test1.txt","rb");file2 = fopen("test2.txt","r");assert(file1 && file2);int readLen1 = fread(str1, 1, len, file1);assert(readLen1 == len);//判断读出的字节数与写入的是否相等printf("file1:\n");printf("%s",str1);return 0;}





原创粉丝点击