连续scanfs,第二个不要求用户输入第二个

时间:2015-12-28 10:26:17

标签: c scanf

当我运行代码时,它会询问我的年龄。但是不要求做爱吗?代码有什么问题。

#include<stdio.h>
#include<conio.h>
int main(void)
{
    int age;
    char sex;

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

    printf("Enter your sex \n");                 
    scanf("%c",&sex);
    printf("Your sex is %c \n",sex);
    getch();
    return 0;
}

3 个答案:

答案 0 :(得分:5)

您要从age扫描中留下一个尾随换行符,然后将其视为有效且充足的输入,以跟踪scanf() %c格式说明符。变化

 scanf("%d",&age);

scanf("%d%*c",&age);

吃掉后续换行符。

话虽如此,getch()不是标准的C函数。您应该使用getchar()来代替stdio.h

答案 1 :(得分:4)

因为之前的\n ..

留下了尾随换行符scanf()

尝试

scanf(" %c",&sex);

注意%c之前的空格。该空间消耗了左侧尾随换行符\n

答案 2 :(得分:-1)

#include<stdio.h>
#include<conio.h>
int main(void)
{
    int age;
    char sex;

    printf("Enter your age \n");
    scanf("%d",&age);
    printf("Your age is %d \n",age);
    fflush(stdin);     // Library function to clean the buffer..
    printf("Enter your sex \n");                 
    scanf("%c",&sex);
    printf("Your sex is %c \n",sex);
    getch();
    return 0;

}