天天看點

關于使用fgets擷取的字元串換行符在windows和linux平台的差異

衆所周知,關于換行符,windows建立的檔案是\r\n結束的, 而linux這種unix類系統是\n結束的。

雖然知道這一點,不過今天在使用fget函數時,還是掉進了坑裡。

廢話少說,直接上程式:

/* fgets example */
#include <stdio.h>

int main()
{
   FILE * pFile;
   char mystring [100];

   pFile = fopen ("myfile.txt" , "r");
   if (pFile == NULL) perror ("Error opening file");
   else {
     if ( fgets (mystring , 100 , pFile) != NULL )
       puts (mystring);
     fclose (pFile);
   }
   return 0;
}
           

如果myfile.txt中的換行符是\r\n,

那麼在windows系統上,fgets擷取到的mystring是以\n結束的(坑爹吧

關于使用fgets擷取的字元串換行符在windows和linux平台的差異

而在linux系統上,mystring是以\r\n結尾的。

如果想要在windows系統上mystring擷取到丢失的\r,換種寫法就好了:

pFile = fopen ("myfile.txt" , "rb");
           

最後說明一點:如果myfile.txt中的換行符是\n,則windows和linux上得到的mystring沒有差異。

繼續閱讀