hczx123 发表于 2015-7-17 11:38:40

关于输入字符问题

本帖最后由 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++;
    }

    这是代码的一部分,在运行时,在输入玩姓名后,窗口直接显示请输入性别:请输入职业:,这样就无法读入性别了,为什么会这样?
哪位大神帮忙解决,谢谢!!!
    如图:

牡丹花下死做鬼 发表于 2015-7-17 12:27:35

另:希望本版鱼油在提问的时间注意以下几点:
1. 提问尽量不要点将,例如: 小甲鱼来问答下...XX来回答下... (影响他人回帖积极性)
2. 代码大于20行以上时,最好写清自己的思路和注释,这样回答的人才能尽快给大家答案!(避免扔上一大堆代码,说是有错误,请人指点!)
3. 发代码请务必使用编辑器的“添加代码文字”(这个符号:<>)

维维apple 发表于 2015-7-17 18:50:49

因为没写取地址符,楼主写代码的习惯不好,得改~~~:sad

hczx123 发表于 2015-7-18 07:02:06

维维apple 发表于 2015-7-17 18:50
因为没写取地址符,楼主写代码的习惯不好,得改~~~

好吧,你是指person.name前面没加吗,但是name是一个字符数组的数组名,不用加取地址符吧

哥斯拉不说话 发表于 2015-7-19 01:55:37

加 getchar() 缓冲一下

小白C 发表于 2015-7-19 13:06:10

scanf有一个问题就是不 清除回车你要加get在下面清除一下回车就可以子

小白C 发表于 2015-7-19 13:06:43

getchar();
页: [1]
查看完整版本: 关于输入字符问题