关于输入字符问题
本帖最后由 hczx123 于 2015-7-17 11:44 编辑#include<stdio.h>
struct
{
int num;
char name;
char sex;
char job;
union
{
int cla;
char position;
}cate;
}person;
int main()
{
int i = 0;
while(i < 2)
{
printf("请输入号码:");
scanf("%d",&person.num);
printf("请输入姓名:");
scanf("%s",person.name);
printf("请输入性别:");
scanf("%c",&person.sex);
printf("请输入职业:");
scanf("%c",&person.job);
if(person.job == 's')
{
printf("请输入学生的班级:");
scanf("%d",&person.cate.cla);
}
if(person.job == 't')
{
printf("请输入老师的职务:");
scanf("%s",person.cate.position);
}
i++;
}
这是代码的一部分,在运行时,在输入玩姓名后,窗口直接显示请输入性别:请输入职业:,这样就无法读入性别了,为什么会这样?
哪位大神帮忙解决,谢谢!!!
如图: 另:希望本版鱼油在提问的时间注意以下几点:
1. 提问尽量不要点将,例如: 小甲鱼来问答下...XX来回答下... (影响他人回帖积极性)
2. 代码大于20行以上时,最好写清自己的思路和注释,这样回答的人才能尽快给大家答案!(避免扔上一大堆代码,说是有错误,请人指点!)
3. 发代码请务必使用编辑器的“添加代码文字”(这个符号:<>) 因为没写取地址符,楼主写代码的习惯不好,得改~~~:sad 维维apple 发表于 2015-7-17 18:50
因为没写取地址符,楼主写代码的习惯不好,得改~~~
好吧,你是指person.name前面没加吗,但是name是一个字符数组的数组名,不用加取地址符吧 加 getchar() 缓冲一下 scanf有一个问题就是不 清除回车你要加get在下面清除一下回车就可以子 getchar();
页:
[1]