使用getchar();定义多个变量

时间:2018-07-29 05:09:27

标签: c char getchar

我有以下代码。

#include <stdio.h>
int main () {
    char letter1;
    char letter2;

    printf("Enter Letter 1: ");
    letter1 = getchar();
    printf("\n");

    printf("Enter Letter 2: ");
    letter2 = getchar();
    printf("\n");

    printf("%c - %c\n", letter1, letter2);
    return(0);
}

我正在尝试使用getchar()来定义letter1letter2,但是它仅适用于letter1,然后将letter2的值设置为'\n'。有谁知道解决方法,所以我可以为两个变量输入值吗?

1 个答案:

答案 0 :(得分:1)

这是因为当您按下第一个字母并键入Enter键时,会将字母和'\n'的代码一个接一个地发送到将要使用的输入缓冲区。

因此,第一个getchar()获得您键入的字母的代码,因此该字母从输入缓冲区中删除,但\n的字母保留下来,由下一个getchar()占用。

为了避免这种情况,您需要不断消耗输入缓冲区,直到'\n'被消耗为止。

一种实现方法是

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

只要读取的字符是\n并且未达到EOF,这将继续消耗输入缓冲区。 getchar()会在错误时返回EOF

int letter1, letter2;
int c;
printf("Enter Letter 1: ");
letter1 = getchar();
printf("\n");
printf("Enter Letter 2: ");
while( (c=getchar())=='\n' && c!=EOF);
letter2=c;
printf("\n");
printf("%c - %c\n", letter1, letter2);

编辑:如注释中所指出,请注意getchar()返回int而不是char。请参阅this帖子。