“隐士” 发表于 2017-4-25 11:43:39

为什么跳过scanf ?

为什么跳过scanf?

人造人 发表于 2017-4-25 12:21:12


scanf(“%c”)
接收了‘\n’

把代码贴出来

“隐士” 发表于 2017-4-25 12:34:12

int main(void)
{
        struct yy
        {
                int num;
                char name;
                char sex;
                char job;
                union
                {
                        int banji;
                        char position;
                }category;
        };
        struct yy person;
        int n, i;
        //printf("请输入学生人数:");
        //scanf("%d", &n);
        for (i = 0; i < 2; i++)
        {
                printf("请输入号码:");
                scanf("%d",&person.num);
                printf("请输入姓名:");
                scanf("%s", person.name);
                printf("请输入性别m/f:");
                scanf("%c", &person.sex);
                printf("请输入职业s/t:");
                scanf("%c", &person.job);
                if (person.job == 's')
                {
                        printf("请输入班级:");
                        scanf("%d", &person.category.banji);
                }
                else
                {
                        printf("请输入教授名:");
                        scanf("%s", person.category.position);
                }
        }
        //输出
        for (i = 0; i < 2; i++)
        {
                printf("号码    姓名    性别   职业   班级/教授\n");
                printf("%d    %s    %c    %c", person.num, person.name, person.sex, person.job);
                printf("%d    %s\n", person.category.banji, person.category.position);
        }
        system("pause");
}

“隐士” 发表于 2017-4-25 12:41:12

我把%c   改成%s就正常了

人造人 发表于 2017-4-25 13:43:51

“隐士” 发表于 2017-4-25 12:41
我把%c   改成%s就正常了

对呀
页: [1]
查看完整版本: 为什么跳过scanf ?