auyhin丶 发表于 2017-1-5 12:56:48

这运行是什么情况啊?

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define LEN sizeof(struct ohno)
struct ohno
{
        int num;
        char name;
       
        char job;
        union
        {
          int class;
          char position;
        }category;
   
}person;

main()
{   
    int i;
        for(i=0;i<2;i++)
        {
           printf("输入学号 : ");
           scanf("%d",&person.num);
           printf("输入姓名 : ");
           scanf("%s",&person.name);
           printf("输入职业 : ");
           scanf("%c",&person.job);

          
          
           if(person.job=='S')
           {
              printf("输入所在班级 : ");
                  scanf("%d",&person.category.class);
           }
        }
}





这是什么情况啊......

我给person创建结点也是这样。
应该不是结点的问题..

明明一个for循环没执行完啊...怎么就进入循环了。。


然后我在程序中加上了system("pause");
发现成这样了..如图

auyhin丶 发表于 2017-1-5 12:57:43

job没法输入??? 为什么啊....

xw0314 发表于 2017-1-5 14:34:03

auyhin丶 发表于 2017-1-5 12:57
job没法输入??? 为什么啊....

scanf()不读取换行符,所以读取不成功!
vc 6.0 可以在scanf()后面加个fflush(stdin);
我用codeblocks这个函数没用,可以自己写个函数
void flush(void)
{
    while(getchar() != '\n')
      continue;
}

也可以在每个scanf()后面加个 getchar();   当然这个方法有些时候会不管用,如果缓冲区里面还有空格和换行符多种字符,一个getchar()是没用的,所以上面两种方法可以选一个,fflush(stdin); 也不是全部都可以用,有些编译器就不行。第二种自己写个函数都可以适用。{:5_91:}

auyhin丶 发表于 2017-1-5 14:49:41

xw0314 发表于 2017-1-5 14:34
scanf()不读取换行符,所以读取不成功!
vc 6.0 可以在scanf()后面加个fflush(stdin);
我用codeblocks ...

{:10_285:}感谢大腿。
明白了..{:5_107:}万分感谢

xw0314 发表于 2017-1-5 14:51:31

auyhin丶 发表于 2017-1-5 14:49
感谢大腿。
明白了..万分感谢

{:5_91:}客气了,相互交流学习

b84408190 发表于 2017-1-6 12:27:56

很简单。我以前也纠结过。
%c改成%s就可以了。
scanf("%s".&preson.jpb);

auyhin丶 发表于 2017-1-6 13:03:05

b84408190 发表于 2017-1-6 12:27
很简单。我以前也纠结过。
%c改成%s就可以了。
scanf("%s".&preson.jpb);

.....你可以去实现一下。你改为%s后面还要比较字符串。
以我现在的理解就是把缓存的回车键清掉就行了。如果有空格还是像3楼说的比较好吧

b84408190 发表于 2017-1-7 06:56:27

本帖最后由 b84408190 于 2017-1-7 06:57 编辑

auyhin丶 发表于 2017-1-6 13:03
.....你可以去实现一下。你改为%s后面还要比较字符串。
以我现在的理解就是把缓存的回车键清掉就行了。 ...

没有问题的.

auyhin丶 发表于 2017-1-7 11:35:27

b84408190 发表于 2017-1-7 06:56
没有问题的.

涨知识了

xw0314 发表于 2017-1-9 20:21:31

auyhin丶 发表于 2017-1-7 11:35
涨知识了

{:5_91:}字符串不一定要用scanf()gets就不存在这个问题了
页: [1]
查看完整版本: 这运行是什么情况啊?