衆所周知,關于換行符,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結束的(坑爹吧
)
而在linux系統上,mystring是以\r\n結尾的。
如果想要在windows系統上mystring擷取到丢失的\r,換種寫法就好了:
pFile = fopen ("myfile.txt" , "rb");
最後說明一點:如果myfile.txt中的換行符是\n,則windows和linux上得到的mystring沒有差異。