Jimmy-zty 发表于 2014-8-23 11:49:58

结构体与公用体问题

#include<stdio.h>
struct
{
    int num;
    char name;
    char sex;
    char job;
    union
    {
      int banji;
      char position;
    }category;
}person;
void main()
{

    int i;
    for(i=0;i<2;i++)
    {
      printf("Please enter the num:");
      scanf("%d",&person.num);
      fflush(stdin);

      printf("Please enter the name:");
      scanf("%s",person.name);
      fflush(stdin);
      printf("Please enter sex(f/m):");
      scanf("%c",&person.sex);
      fflush(stdin);
      printf("Please enter the job(s/t):");
      scanf("%c",&person.job);
      fflush(stdin);
      if(person.job=='s')
      {
            printf("Please enter the class:");
            scanf("%d",person.category.banji);
      }
      else if(person.job=='t')
      {
            printf("Please enter the position:");
            scanf("%s",&person.category.position);
      }
      else
      {
            printf("Error input!!");
      }
    }
    printf("num \t name \t sex \t job \t class|position \n");
    for(i=0;i<2;i++)
    {
      if(person.job=='s')
      {
            printf("%d \t %s \t %c \t %c \t %d \n",person.num,person.name,person.sex,person.job,person.category.banji);
      }
      else
      {
            printf("%d \t %s \t %c \t %c \t %s \n",person.num,person.name,person.sex,person.job,person.category.position);
      }
    }
}
为什么只能输入一组数据啊,输入完一组数据程序就错误!!

寂寞的行者4455 发表于 2014-8-23 12:47:07

粗心大意,应该改成
scanf("%d",&person.category.banji);
scanf("%s",person.category.position);
页: [1]
查看完整版本: 结构体与公用体问题