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 次 |
最近记录: |