这是做什么的:while((c = getchar())!=' \ n'&& c!= EOF);

时间:2014-10-04 12:30:02

标签: c++ eof getchar gets

while((c= getchar()) != '\n' && c != EOF);

我通过使用gets()输入字符串来解决问题。我在google上发现它在输入缓冲区中保留了'\ n'的值。我在这里搜索并找到上面的代码来解决我的问题。但是我并没有完全掌握它。这是做什么的?有人请赐教。

2 个答案:

答案 0 :(得分:4)

C ++中的赋值也将产生赋值。因此c= getchar()正在读取文件中的下一个字符,(c= getchar()) != '\n'正在将该读取字符与换行符进行比较。还有针对特殊EOF值的另一项测试,以确保在您到达文件末尾时不会继续尝试阅读。

while和结束分号之间没有任何声明,因为没有其他事情需要做,你将输入丢弃了。

答案 1 :(得分:2)

代码引入了while - 循环。它的退出条件为整数c指定getchar()返回的值,并检查它是否等于换行符('\n')或EOF。如果是,则循环退出。如果不是,则提取下一个字符,依此类推。

代码基本上会跳过所有字符,直到下一个换行符或EOF到达。它相当于:

for (;;)
{
    c = getchar(); // c has been declared elsewhere
    if (c == '\n' || c == EOF)
        break;
}