| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1047 人关注过本帖
标题:大家帮着看看,按照书上的代码打的,到底哪里有问题,....
取消只看楼主 加入收藏
cmefly
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-11-13
收藏
 问题点数:0 回复次数:3 
大家帮着看看,按照书上的代码打的,到底哪里有问题,....
设有若干个人员的数据,其中有学生和教师.学生的数据包括:姓名,号码,性别,职业,班级.教师的数据包括:姓名,号码,性别,职业,职务.如果职业是学生,第五项为该生所在班级,如果职业是教师,则第五项为该教师的职务.书上用结构体内嵌共用体来实现的,我编译的时候总是出错..

代码如下:struct
{
  int num;
  char name[10];
  char sex;
  char job;
  union
  {int class;
  char position[10];
  }category;
  }person[2];
main()
{
   int n,i;
   for(i=0;i<2;i++)
   {
    scanf("%d,%s,%c,%c",&person[i].num,person[i].name,&person[i].sex,
    &person[i].job);
    if(person[i].job=='s')
    scanf("%d",&person[i].category.class);
    else if(person[i].job=='t')
    scanf("%s",person[i].category.position);
    else printf("input error!");
    }
printf("\n");
printf("No.    Name    sex job        class/position\n");
for(i=0;i<2;i++)
{
  if(person[i].job=='s')
  printf("%d\t%s\t%c %c\t%d\n",person[i].num,person[i].name,person[i].sex,
  person[i].job,person[i].category.class);
  else
  printf("%d\t%s\t%c %c\t%s\n",person[i].num,person[i].name,person[i].sex,
  person[i].job,person[i].category.position);
}
}
运行后,我输入:
101
Li
f
程序输出input error!
我接着输入s,程序再次输出 input error!并且跳了出来...
按ALT+F5查看,程序输出如下结果:
No.    Name    sex job        class/position
101    Li    
f
0
请问是哪里出问题了...(源文件我已上传,各位也可以在自己的机器上运行下)
NONAME.rar (716 Bytes)
搜索更多相关主题的帖子: 代码 
2007-12-26 16:38
cmefly
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-11-13
收藏
得分:0 
还是不行,分开写也不行,你们可以在自己的机器上试试
2007-12-27 11:54
cmefly
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-11-13
收藏
得分:0 
楼上的程序是可以正常运行,但只限于4个字母的名字(%4S),如果名字多于或少于4个字母,问题依然存在,不过谢谢你的提醒,我好象知道问题所在了.....
应该是输入的时候%S和%C没有明确的界限,也就是(%S%C)即使中间加了逗号(%S,%C),但是如果字符串长度小于指定的长度,逗号依然会被当作合法字符送入字符串,如果此时长度依然不够,那么接下来输入的字符(%C)也会被当作合法字符送给字符串,初步分析是这样....具体结果还有待于实验.....
2007-12-28 13:22
cmefly
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-11-13
收藏
得分:0 
问题已解决,我们群老大告诉我的,只要在"%C"的时候加个空格用来存放回车就行了....
有在学习C和数据结构的朋友请加我:283049598
2007-12-29 10:40
快速回复:大家帮着看看,按照书上的代码打的,到底哪里有问题,....
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035499 second(s), 9 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved