代码输出显示不完整,中间两个数据不显示,还有第一个数据应该是1,2。结果全部是0


#include 
#include
struct
{
    int num;
    char name[20];
    char sex;
    char job;
    union
    {
        int classno;
        char position[10];
    }type;
}person[2];
void main()
{
    int i;
    for(i=0;i<2;i++)
    {
        printf("input teach or student:");
        scanf("%s,%d,%s,%c,",&person[i].job,&person[i].num,person[i].name,&person[i].sex);
        if(person[i].job=='a')
        {
            printf("input classno:");
        scanf("%d",&person[i].type.classno);
        }
        else
        if(person[i].job=='t')
        {
            printf("input job:");
        scanf("%s",person[i].type.position);
        }
        else
        {
            printf("error!");
        }
    }
    printf("\n");
    for(i=0;i<2;i++)
    {
        if(person[i].job=='a')
        {
            printf("%d ",person[i].num);
            printf("%s ",person[i].name);
            printf("%c ",person[i].sex);
            printf("%c ",person[i].job);
            printf("%d\n",person[i].type.classno);
        }
        if(person[i].job=='t')
        {
            printf("%d ",person[i].num);
            printf("%s ",person[i].name);
            printf("%c ",person[i].sex);
            printf("%c ",person[i].job);
            printf("%s\n",person[i].type.position);
        }
    }
  }

img

第22行里:scanf("%s,%d,%s,%c,",&person[i].job,&person[i].num,person[i].name,&person[i].sex); 输入语句里各参数间不要用 ','逗号间隔,改为用空格间隔即可,输入语句改为:scanf(" %c %d %s %c",&person[i].job,&person[i].num,person[i].name,&person[i].sex); 即可。

img


修改如下,供参考:

#include <stdio.h>
#include<string.h>
struct
{
    int num;
    char name[20];
    char sex;
    char job;
    union
    {
        int classno;
        char position[10];
    }type;
}person[2];
void main()
{
    int i;
    for(i=0;i<2;i++)
    {
        printf("input teach or student:");
        scanf(" %c %d %s %c",&person[i].job,&person[i].num,person[i].name,&person[i].sex);
        //scanf("%s,%d,%s,%c,",&person[i].job,&person[i].num,person[i].name,&person[i].sex);修改
        if(person[i].job=='a')
        {
            printf("input classno:");
            scanf("%d",&person[i].type.classno);
        }
        else
        if(person[i].job=='t')
        {
            printf("input job:");
            scanf("%s",person[i].type.position);
        }
        else
        {
            printf("error!");
        }
    }
    printf("\n");
    for(i=0;i<2;i++)
    {
        if(person[i].job=='a')
        {
            printf("%d ",person[i].num);
            printf("%s ",person[i].name);
            printf("%c ",person[i].sex);
            printf("%c ",person[i].job);
            printf("%d\n",person[i].type.classno);
        }
        if(person[i].job=='t')
        {
            printf("%d ",person[i].num);
            printf("%s ",person[i].name);
            printf("%c ",person[i].sex);
            printf("%c ",person[i].job);
            printf("%s\n",person[i].type.position);
        }
    }

}

这里4个逗号,你没一模一样输入4个,你键盘只输入3个

scanf("%s,%d,%s,%c,"