C编程getc和while循环行为

时间:2013-11-16 16:32:17

标签: c

我正在尝试使用FILE * fp,fgets

读取文件
 while( (ch=getc(fp)) != '\n' ){
    printf("%d\n",ch);
 }

奇特之处在于,此代码还会打印换行符。如果没有检测到“\ n”,是不是while循环说要打印?我怎么能这样做它不打印“\ n”。感谢

1 个答案:

答案 0 :(得分:1)

如果正在从文件中读取字符串处理(文本文件),请确保以文本模式打开文件。

在使用"\n"以外的其他内容的系统上以文本模式打开的文件表示行尾(如"\r\n""\n\r""\r)会将其转换为"\n"。关于字节顺序标记(BOM或文件结束字符(^ Z))也可能发生其他处理。

FILE *fp;
fp = fopen("fielanme", "r"); 

OTOH,如果打开想要以二进制文件打开文件,请为变量行结尾做好准备。

FILE *fp;
fp = fopen("fielanme", "rb");