在windows系统下,C语言打开文件的"文本文件"方式和"二进制文件方式"的区别是:
在文本文件模式下:当给文件写入'\n'时,实际会写入'\r''\n',读文件时如果读到\r\n,会丢弃\r只保留\n, 除此以外,和二进制方式没有任何区别
举例:
FILE* fp;
fp = fopen("123", "w");
fputc(10,fp); //10就是\n 但实际上会对文件写入\r\n,你用16进制编辑器打开123,会看到0D0A 两个字符
fclose(fp);
甚至这样:
fp = fopen("123", "w");
int n = 1116682; //这是16进制的0x110A0A
fwrite(&n, 4, 1, fp); //因为那数字字节里有0A,写入时会挤进去0D实际写入0D0A0D0A1100
fclose(fp);
而这样就只写入0A
fp = fopen("123", "wb");
fputc(10,fp); //只写入0A
至于你看到的"仍是文本文件",是因为你对文件写入的内容就是些文本而已
所有文件都是二进制的,文本文件只是文件的内容都是些ASCII或者unicode等可读的字符而已