由于历史的原因,各大主流操作系统在行尾添加的字符不太一样:Windows使用回车换行”\r\n”,Unix使用换行”\n”,Mac使用回车”\r”。
也就是说,在Windows下点击“回车符”,会添加两个字符,在Unix/Mac下点击“回车”,只添加一个字符。
因此,在我们编程的时候,要注意这些细小的差别。
不同计算机上C语言统一规定:文本文件的行结束符变成一个符号LF,也就是换行符。回车符和换行符转换成一个换行符,对PC而言,文本文件行结束符回车符和换行符读入后,丢掉回车符,留下换行符。
在Ubuntu下新建一个文本文件,用ghex打开该文本会发现文件后面添加了一个换行符。
在Ubuntu下用fgetc读取字符时,若要判断读取结束时,不能使用
while(!feof(fp))
{
ch = fgetc(fp);
if(ch == EOF)
break;
}
这样的话,在Ubuntu下读取文件时由于在文件后面会多出一个换行符,因此,要用以下的方式:
while(!feof(fp))
{
ch = fgetc(fp);
if(ch == EOF || ch == '\n')
break;
}