gpt4 book ai didi

c - 在 C 中使用 scanf() 连续读取两个字符

转载 作者:行者123 更新时间:2023-12-03 23:53:10 28 4
gpt4 key购买 nike

我尝试从用户 t 输入两个字符的次数。这是我的代码:

int main()
{
int t;
scanf("%d",&t);
char a,b;

for(i=0; i<t; i++)
{
printf("enter a: ");
scanf("%c",&a);

printf("enter b:");
scanf("%c",&b);
}
return 0;
}

奇怪的是第一次的输出是:

enter a: 
enter b:

即代码不等待a的值。

最佳答案

问题是 scanf("%d", &t) 在输入缓冲区中留下一个换行符,它只被 scanf("%c", &a) 使用code> (因此 a 被分配了一个换行符)。您必须使用 getchar(); 来使用换行符。

另一种方法是在 scanf() 格式说明符中添加一个空格以忽略前导空白字符(这包括换行符)。示例:

for(i=0; i<t; i++)
{
printf("enter a: ");
scanf(" %c",&a);

printf("enter b: ");
scanf(" %c",&b);
}

如果您更喜欢使用 getchar() 来使用换行符,则必须执行以下操作:

for(i=0; i<t; i++)
{
getchar();
printf("enter a: ");
scanf("%c",&a);

getchar();
printf("enter b:");
scanf("%c",&b);
}

我个人认为前一种方法更好,因为它忽略了任意数量的空格,而 getchar() 只消耗一个。

关于c - 在 C 中使用 scanf() 连续读取两个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099976/

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