验证表达式 getchar() != EOF 是 0 还是 1
Verify that the expression getchar() != EOF is 0 or 1
问题
Verify that the expression getchar() != EOF
is 0
or 1
.
接近
我曾尝试编写一个程序,它首先接受 EOF
以外的输入,然后打印值 1
。接下来它将以 EOF
作为输入并打印 0
.
/* Program to verify that the value of the expression getchar() != EOF is 0 or 1 */
#include <stdio.h>
int main()
{
printf("Inputting something other than EOF, value of the expression is %d\n", getchar() != EOF);
printf("Inputting EOF, value of the expression is %d\n", getchar() != EOF);
printf("It is verified that the expression getchar() != EOF is 0 or 1.\n");
return 0;
}`
问题:
但是当我输入时它不打印第一行并等待下一个输入。它直接打印所有行。如何让第二行接受下一个输入?
这里的问题是由于getchar()
的工作原理。它只会在按下 ENTER 键后开始读取,在这种情况下,下一个 getchar()
(在第二个 printf()
中)将读取 newline(\n
) 来自输入缓冲区,不会等待任何 user 输入。
解决方案:在第二个 printf()
之前再添加一个 getchar()
调用。这将吃掉 \n
。
问题
Verify that the expression
getchar() != EOF
is0
or1
.
接近
我曾尝试编写一个程序,它首先接受 EOF
以外的输入,然后打印值 1
。接下来它将以 EOF
作为输入并打印 0
.
/* Program to verify that the value of the expression getchar() != EOF is 0 or 1 */
#include <stdio.h>
int main()
{
printf("Inputting something other than EOF, value of the expression is %d\n", getchar() != EOF);
printf("Inputting EOF, value of the expression is %d\n", getchar() != EOF);
printf("It is verified that the expression getchar() != EOF is 0 or 1.\n");
return 0;
}`
问题:
但是当我输入时它不打印第一行并等待下一个输入。它直接打印所有行。如何让第二行接受下一个输入?
这里的问题是由于getchar()
的工作原理。它只会在按下 ENTER 键后开始读取,在这种情况下,下一个 getchar()
(在第二个 printf()
中)将读取 newline(\n
) 来自输入缓冲区,不会等待任何 user 输入。
解决方案:在第二个 printf()
之前再添加一个 getchar()
调用。这将吃掉 \n
。