gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:47:08 24 4
gpt4 key购买 nike

我有以下代码。

#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' 。有谁知道解决此问题的方法,以便我可以为这两个变量键入值?

最佳答案

这是因为当您按下第一个字母并键入 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发布。

关于c - 使用 getchar();定义多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51577409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com