Mxy*_*xyk 2 c file-io loops infinite-loop
这是我的C程序的一部分:
FILE *fin_length;
int c;
int countNewLines = 0;
fin_length = fopen( argv[1], "r" );
while( ( c == fgetc( fin_length ) ) != EOF ) {
if( c == 10 ) countNewLines++;
}
fclose( fin_length );
Run Code Online (Sandbox Code Playgroud)
我用命令行参数运行程序./a.out myMessage.dat. myMessage.dat是5行长,每行只包含一个短句.因此,我希望循环找到这5行,if( c == 10 )并在countNewLines每次找到回车符时添加一行.
为什么我在这里得到一个无限循环?
while( ( c == fgetc( fin_length ) ) != EOF ) {
你有太多的等号.这应该是
while( ( c = fgetc( fin_length ) ) != EOF ) {
使用时==,最终会进行两次比较.第一个是c和之间的比较和返回值fgetc().
第二个比较将结果(或者是true或者false)与之比较EOF.我没有查看它的值EOF,但肯定不是0或1- 意味着第二次比较永远不会返回错误.
| 归档时间: |
|
| 查看次数: |
271 次 |
| 最近记录: |