1

我写了两个程序。在第一个中,我没有使用 getchar 从键盘获取字符,在这种情况下,编译完全缺少第二个 scanf。所以为了克服这个问题,我使用了 getchar。在这种情况下,我可以成功提供输入,但没有进行比较。虽然我已经将输入作为“d”而“d”输出只是“再见”。

#include<stdio.h>
main(){
    char c,f;
    printf("e");
    scanf("%c",&c);
    printf("one more");
    scanf("%c",&f);
    if(c=='d'&&f=='d')
        printf("hi");
    else
        printf("bye");

}

使用 getchar

#include<stdio.h>
 main(){
    char c,f;
    printf("e");
    scanf("%c",&c);
    printf("one more");
    scanf("%c",&f);
    getchar();
    if(c=='d'&&f=='d')
        printf("hi");
    else
        printf("bye");

}
4

1 回答 1

2

换行符将保留在标准输入中,因为它不会被scanf("%c"). 这意味着第二个 scanf() 读取换行符,而不是下一个输入。更改为scanf(" %c")将是一个解决方案,它将跳过前导空格。

于 2013-01-27T20:02:29.730 回答