user-0 提问: 我实在不知道自己的代码哪里错了  请指教

回复:
user: user-1
content: #include<stdio.h> #include "string.h"  struct {     int num;     char name[10];     char sex;     char job;     union     {         int class1;         char position[10];     }category; }person[4];  int main() {     int i, n;     n = 2;     for(i = 0; i < n; i++)     {         printf("请输入您的职业：");         scanf(" %c", &person[i].job);         if('t' == person[i].job)         {             printf("请输入老师学号：");             scanf(" %d", &person[i].num);             printf("请输入老师的姓名：");             scanf(" %s", person[i].name);             printf("请输入性别：");             scanf(" %c", &person[i].sex);              printf("++++debug++++\n");             printf("请输入老师的职务：");             scanf(" %s", person[i].category.position);         }         else if('s' == person[i].job)         {             printf("请输入学生学号：");             scanf(" %d", &person[i].num);             printf("请输入学生的姓名：");             scanf(" %s", &person[i].name[0]);             printf("请输入性别：");             scanf(" %c", &person[i].sex);             printf("请输入学生的班级：");             scanf(" %d", &person[i].category.class1);         }         else         {             printf("输入错误！\n");             return 0;         }     }      printf("\nnum\tname\tsex\tjob\tclass or position\n");     for(i = 0; i < n; i++)     {         printf("%d\t%s\t%c\t%c\t", person[i].num, person[i].name, person[i].sex, person[i].job);         if('s' == person[i].job)         {             printf("%d\n", person[i].category.class1);         }         else         {             printf("%s\n", person[i].category.position);         }     }     return 0; } 主要是scanf的格式化输入，看我的如：scanf(" %c", &person[i].sex);内的空格 运行后为： 请输入您的职业：t 请输入老师学号：1234 请输入老师的姓名：zhangsan 请输入性别：m ++++debug++++ 请输入老师的职务：shuxue 请输入您的职业：s 请输入学生学号：5678 请输入学生的姓名：lisi 请输入性别：h 请输入学生的班级：5  num     name    sex     job     class or position 1234    zhangsan        m       t       shuxue 5678    lisi    h       s       5 Press any key to continue

user: user-2
content: printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。  在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 int c; scanf("%c",&c); //时，都改为 char s[2]; int c; scanf("%1s",s); c=s[0];

user: user-3
content: 在使用scanf输入char的时候第一次会读取上一次滞留的回车，所以可以进行两次读取或者清空缓存。另外就是不能使用保留字class,其他的没什么问题，下面是正确的代码：  #include<stdio.h> #include "string.h"  struct {     int num;     char name[10];     char sex;     char job;     union     {         int myclass;         char position[10];     }category; }person[4];  int main() {     int i, n;     n = 4;     for(i = 0; i < n; i++)     {         printf("请输入您的职业：");         scanf("%c", &person[i].job);         if('t' == person[i].job)         {             printf("请输入老师学号：");             scanf("%d", &person[i].num);             printf("请输入老师的姓名：");             scanf("%s", person[i].name);             printf("请输入性别："); 			getchar();             scanf("%c", &person[i].sex);              printf("++++debug++++\n");             printf("请输入老师的职务：");             scanf("%s",person[i].category.position); 			getchar();         }         else if('s' == person[i].job)         {             printf("请输入学生学号：");             scanf("%d", &person[i].num);             printf("请输入学生的姓名：");             scanf("%s", &person[i].name[0]);             printf("请输入性别："); 			getchar();             scanf("%c", &person[i].sex);             printf("请输入学生的班级：");             scanf("%d", &person[i].category.myclass); 			getchar();         }         else         {             printf("输入错误！\n");             return 0;         } 		printf("\n");     }          printf("\nnum\tname\tsex\tjob\tclass or position\n");     for(i = 0; i < n; i++)     {         printf("%d\t%s\t%c\t%c\t", person[i].num, person[i].name, person[i].sex, person[i].job);         if('s' == person[i].job)         {             printf("%d\n", person[i].category.myclass);         }         else         {             printf("%s\n", person[i].category.position);         }     }     return 0; }

user: user-4
content: 你想实现什么功能，出的错又是什么呢

user: user-5
content: 虽然不知道你写的是什么，class是个关键字，你int真的好嘛。