| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 677 人关注过本帖
标题:[求助]
只看楼主 加入收藏
吹风
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2005-11-10
收藏
 问题点数:0 回复次数:8 
[求助]

struct student{

int num;

char name[20];

int score[3];}stud[4];

print(struct student *p)

{for(;p<=stud+4;p++)

printf(("%d,%s,%d,%d,%d\n",p->num,p->name,p->score[0],p->score[1],p->score[2]);
}
main()

{int i=0;

for(i=0;i<=4;i++);

scanf("%d,%s,%d,%d,%d\n",&stud[i].num,&stud[i].name,&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);

print(stud);}

输入与输出本来应该一致的,可是跑出来是

比方输入1,1,1,1,1输出1,1,1,1,1,0,0,0   

求助啊!!!!

搜索更多相关主题的帖子: name stud num int 
2005-12-02 23:31
zhai2651173
Rank: 1
等 级:新手上路
帖 子:303
专家分:0
注 册:2005-11-5
收藏
得分:0 
首先你去看一下林锐的高质量编程,你写的代码的格式只能打0分。
然后,for(i=0;i<=4;i++);
把后面的分号去掉,就正确了!

日本小子有种和我单挑...................坯试日本
2005-12-03 18:18
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
scanf("%d,%s,%d,%d,%d\n",&stud[i].num,&stud[i].name,&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
[QUOTE]scanf("%d,%s,%d,%d,%d\n"[/QUOTE]
这一句????

好累
2005-12-05 00:18
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
收藏
得分:0 
2楼正解,1楼说的只是打错,但这句为什么不可以呢??

换成(scanf("%d%s%d%d%d\n"

好了,

但我不明白scanf("%d,%s,%d,%d,%d\n"为什么错

学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-05 19:16
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
收藏
得分:0 
1楼说的林什么的,高质量变成在哪里啊

学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-05 19:20
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
收藏
得分:0 

沉的好快,顶


学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-07 20:12
cherrysindow
Rank: 2
等 级:论坛游民
帖 子:124
专家分:10
注 册:2005-10-21
收藏
得分:0 

我记得我已经硕果这个问题了

如果用scanf("%s",s)输入一个字符串的时候

它要求要有一个回车符作为输入的结束标志

如果在你的字符串的后面还有"%d"等要求输入一个数字的要求

放在一起是不行的

因为它把你后面的所有的输入全当成字符串

所以你的数字是没有任何的输入


虽然我很普通,但是我很讲道理 如果我的问题冒犯了您 请不要生气 因为我是无意的
2005-12-07 20:20
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
如果不提出一些粗心错误
比如 for(i=0;i<=4;i++); 之类的话

你的出错的原因很简单,因为%s在3个%d之前,如果你输入
1,vlinux,100,90,80
那么程序将会把
1 => num
vlinux,100,90,80 => name
0 => score[0]
0 => score[1]
0 => score[2]
故输出为1,vlinux,100,90,80,0,0,0
也就是说程序把 vlinux,100,90,80 当成字符串处理了,主要问题已经给出,剩下的自己想想啦

淘宝杜琨
2005-12-07 20:23
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
收藏
得分:0 
收到,

c的输入输出有点繁,

因为我习惯了,scanf("%d,...);

觉得有个豆号分割好判断一点,

受教了,谢谢啊

学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-07 20:29
快速回复:[求助]
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011946 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved