Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C编程getc和while循环行为_C - Fatal编程技术网

C编程getc和while循环行为

C编程getc和while循环行为,c,C,我正在尝试使用file*fp,fgets读取文件 while( (ch=getc(fp)) != '\n' ){ printf("%d\n",ch); } 奇怪的是,这段代码也打印新行。如果未检测到“\n”,while循环不是说要打印吗?如何才能使其不打印“\n”。谢谢如果要从文件中读取以进行字符串处理(文本文件),请确保文件以文本模式打开 在使用非“\n”指示行尾的系统上以文本模式打开的文件,如“\r\n”或“\n\r”或”\r将转换为“\n”。有关字节顺序标记(BOM或文件结尾

我正在尝试使用file*fp,fgets读取文件

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

奇怪的是,这段代码也打印新行。如果未检测到“\n”,while循环不是说要打印吗?如何才能使其不打印“\n”。谢谢

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

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

OTOH,如果open希望以二进制方式打开文件,请准备使用不同的行结尾

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

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

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

OTOH,如果open希望以二进制方式打开文件,请准备使用不同的行结尾

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

printf(“%d”,ch);您确定它正在获取换行符吗?当到达文件末尾或发生错误时,它也可以返回
EOF
。如果您使用Windows,您可能还必须适应换行符结尾是回车符和换行符
\r\n
。您好,很抱歉造成混淆。确实是这样。\r\n因此正确的方法是检查'\n'和'\r'printf'(“%d”,ch);您确定它正在获取换行符吗?当到达文件末尾或发生错误时,它也可以返回
EOF
。如果您使用Windows,您可能还必须适应换行符结尾是回车符和换行符
\r\n
。您好,很抱歉造成混淆。这确实是\r\n。因此正确的方法是检查“\n”和“\r”