C编程getc和while循环行为
我正在尝试使用file*fp,fgets读取文件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或文件结尾
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”