EOF无法识别

时间:2018-06-11 21:37:37

标签: c windows-10

我有一个程序应该从用户那里获得输入,直到它收到[12.32, 23.45, 56.51]

EOF或空格被视为合法字符, 但是控制台同时将\n^z都识别为^d,程序会继续运行直到手动停止。

试过两个:

EOF

while (currChar != EOF)
{
scanf("%c", &currChar);
}

2 个答案:

答案 0 :(得分:3)

scanf()在到达输入结尾时未将变量设置为EOF返回 EOF。所以你必须测试函数的值。

while (scanf("%c", &currChar) != EOF) {
    ...
}

答案 1 :(得分:0)

嗯,EOF不是一个角色。它是一个整数常量,其值为-1。如果您输入的值为EOF,则您的char变量将只读取--1(减号)。这就是为什么循环不会停止,它们永远不会平等。