二进制文件与文本文件区别:
在windows平台下:
文本文件:写入过程中,会将换行符替换为回车符和换行符,而读取过程刚好与写入相反。
二进制文件:读取和写入无差别。
在Linux平台下:
文本文件和二进制文件都无差别。
具体看下面代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void readfile(char *path)
{
FILE *pf = fopen(path, "rb");
char ch;
fread(&ch, 1, 1, pf);
while (!feof(pf))
{
printf("% d", ch);//打印ASCII
fread(&ch, 1, 1, pf);
}
fclose(pf);
}
void main()
{
char buf[5] = { 10, 10, 10, 10, 10 };//每个元素是换行符
FILE *pfa;//代表文本文件
FILE *pfb;//代表二进制文件
char patha[40] = "D:\\a.c";
char pathb[40] = "D:\\b.c";
pfa= fopen(patha, "w");
if (pfa==NULL)
{
printf("文件打开失败");
}
else
{
fwrite(buf, 1, 5, pfa);
fclose(pfa);
}
pfb = fopen(pathb, "wb");
if (pfb == NULL)
{
printf("文件打开失败");
}
else
{
fwrite(buf, 1, 5, pfb);
fclose(pfb);
}
printf("\n");
printf("文本写入读取内容:\n");
readfile(patha);
printf("\n");
printf("文本写入读取内容:\n");
readfile(pathb);
system("pause");
}
</pre><pre name="code" class="plain">
测试结果:
从结果可以分析得出:
文本写入时候将10(换行符的ASCII)替换成了13(回车符)和10(换行符);\
二进制文件没有变化.