C语言 文本文件和二进制文件读写
问题:今天在调试代码的时候,出现了一个很奇怪的问题,问题出在对文件进行复制的时候,复制过去的新文件大小老是不对。
产生原因:产生的原因在于,原文件是二进制文件,而我在读取二进制文件的时候,采用的是文本文件的方式进行读取,导致问题。
学习:
-
采用文本方式对文件进行操作,在windows中对于另起一行(\n),会替换成\r\n,对于linux平台则保持不变,在ios平台中则是\r。简单讲就是在window平台中\n存储在文件中后会被替换成\r\n,使用文本方式读取时再替换回来。
-
文本方式和二进制方式存储,其实最大的区别在于对数字的处理,比如对数字5的处理,如果采用文本方式存储,则存储在文件中的是ascii码35,占8位。如果用二进制存储,则就是5的二进制标准,占32位。
-
对于字符是否转换,跟读写函数是没有关系的。在w模式下,fprintf和fwrite都会对\n进行处理。同理,在b模式下,fprintf和fwrite都不会对\n进行处理。
评论区