关于使用fgets获取的字符串换行符在windows和linux平台的差异

编程知识 更新时间:2023-04-06 23:08:07

众所周知,关于换行符,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平台的差异

本文发布于:2023-04-06 23:08:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/fa009be3c9696a636bf4473b93488b59.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   差异   换行符   平台   fgets

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 51293文章数
  • 14阅读数
  • 0评论数