fopen後只能讀到部分文件問題解決,文本方式vs二進制方式

在windows下經常有人遇到,fopen打開文件後,讀取文件內容,讀到一半的就收到EOF的問題。

其根源在於打開的方式選擇了文本方式而未選擇二進制方式。
在windows系統上這是有區別的,如果不加b,讀取到第一個’\0’就會終止了。b –按二進制文件讀取。

fp=fopen("D:\1.txt","rb");

DESCRIPTION
The fopen() function opens the file whose name is the string pointed to by path and associates a stream with it.

   The argument mode points to a string beginning with one of the following sequences (possibly followed by additional characters, as described below):

   r      Open text file for reading.  The stream is positioned at the beginning of the file.

   r+     Open for reading and writing.  The stream is positioned at the beginning of the file.

   w      Truncate file to zero length or create text file for writing.  The stream is positioned at the beginning of the file.

   w+     Open for reading and writing.  The file is created if it does not exist, otherwise it is truncated.  The stream is positioned at the beginning of the file.

   a      Open for appending (writing at end of file).  The file is created if it does not exist.  The stream is positioned at the end of the file.

   a+     Open  for  reading  and  appending  (writing at end of file).  The file is created if it does not exist.  The initial file position for reading is at the beginning of the file, but output is
          always appended to the end of the file.

   The mode string can also include the letter 'b' either as a last character or as a character between the characters in any of the two-character strings described above.  This is strictly  for  com‐
   patibility with C89 and has no effect; the 'b' is ignored on all POSIX conforming systems, including Linux.  (Other systems may treat text files and binary files differently, and adding the 'b' may
   be a good idea if you do I/O to a binary file and expect that your program may be ported to non-UNIX environments.)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章