小泉向西流 发表于 2014-6-5 20:57:11

c语言--共用体函数--操作输入输出时不正常的问题。

本帖最后由 小泉向西流 于 2014-6-6 14:36 编辑

今天看了小甲鱼老师的c语言的视频,第059讲, 讲的共用体部分的内容。



#include<stdio.h>


struct
{
      int num;
      char name;
      char sex;
      char job;
      union
      {
                int class;
                char position;
      }category;
}person;

void main()
{
      inti, n;
      printf("Please input the number of the records:");
      scanf("%d",&n);

      printf("Please input records!\n\n");
      for(i=0;i<n;i++)
      {
                printf("Please input the num: ");
                scanf("%d",&person.num);               
                printf("Please input the name: ");
                scanf("%s",person.name);
            printf("Please input the sex <M/F>: ");
                scanf("%c",&person.sex);      
                printf("Please input the job <t/s>: ");
                scanf("%c",&person.job);

                if(person.job=='s')
                {
                        printf("Plaese input the class: ");
                        scanf("%d",&person.category.class);
                }
                else if(person.job=='t')
                {
                        printf("Plaese input the position: ");
                        scanf("%s",person.category.position);
                }
                else
                {
                        printf("inpur error!\n\n");
                }
               
               
      }
      
      
      
      printf("\n\n");
      printf("There are %d records:\n", n);
      printf("No.\tname\tsex\tjob\tclass/position\n");
      for(i=0;i<n;i++)
      {
                if(person.job=='s')
                {
                        printf("%-6d%-8s %-7c %-6c %-6d\n", person.num, person.name, person.sex, person.job, person.category.class);
                }
                else
                {
                        printf("%-6d%-8s %-7c %-6c %-6s\n", person.num, person.name, person.sex, person.job, person.category.position);
                }
      }
}



输出结果:


提示输出不正常,导致输入也不正常。
但编译可以通过,无error 无warning。
为什么会出现这种情况呢?求大神帮忙开导下。

小泉向西流 发表于 2014-6-5 20:58:55

本帖最后由 小泉向西流 于 2014-6-5 21:07 编辑

我自己加了一个n, 可以限定输入数据单元的个数。
其他的,依据框图写的。
期望出现视频中的这种效果。(增加部分: 要先选择要输入的结构体元素的个数。其他不变)

小泉向西流 发表于 2014-6-6 14:36:52

有人来解答吗?
{:1_1:}{:1_1:}
快来大神啊。
页: [1]
查看完整版本: c语言--共用体函数--操作输入输出时不正常的问题。