众所周知,关于换行符,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没有差异。
更多推荐
关于使用fgets获取的字符串换行符在windows和linux平台的差异
发布评论