gpt4 book ai didi

c - scanf ("%c")调用似乎被跳过

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

我尝试了下面的代码,但似乎跳过了 scanf("%c") 。它只要求我输入姓名和年龄并跳过下面的行。它只是打印 if 语句上方的 printf 中的文本。有人可以帮忙吗?

#include<stdio.h>

int main()
{
int age;
char sex;
char name[20];
char status;
printf("Enter your last name\n");
scanf("%s", &name);

printf("Enter your age\n");
scanf("%d", &age);

printf("Enter sex (M/F)\n");
scanf("%c", &sex);

printf("your status,married, single,irrelevant (M/S/I)\n");
scanf("%c", &status);
if(age>=16 && sex=='M')
printf("hello, Mr %s\n", name);
if(age<16 && sex =='M')
printf("hello, Master %s\n", name);
if(sex=='F' && status=='M')
printf("hello, Mrs %s\n", name);
if(sex=='F' &&(status=='S' ||status=='I'))
printf("hello,miss %s\n", name);
}

最佳答案

改变

scanf("%c", &sex);

scanf(" %c", &sex);
^
space

scanf("%c", &status);

scanf(" %c", &status);
^
space

问题是由于第二次调用 scanf() 后尾随换行符所致。由于它是 %d 类型说明符,因此当您按 Enter 时,流中会留下换行符 ( '\n' ),并且next scanf() 尝试读取换行符,因此,它看起来好像只是跳过了输入,但实际上,它读取了换行符。

因此,换行符存储在变量 sex 中,因此,它会跳过要求您输入该变量的步骤。

关于c - scanf ("%c")调用似乎被跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43399340/

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