[求助]
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
求助啊!!!!
----------------解决方案--------------------------------------------------------
首先你去看一下林锐的高质量编程,你写的代码的格式只能打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]);
[QUOTE]scanf("%d,%s,%d,%d,%d\n"[/QUOTE]
这一句????
----------------解决方案--------------------------------------------------------
2楼正解,1楼说的只是打错,但这句为什么不可以呢??
换成(scanf("%d%s%d%d%d\n"
好了,
但我不明白scanf("%d,%s,%d,%d,%d\n"为什么错
----------------解决方案--------------------------------------------------------
1楼说的林什么的,高质量变成在哪里啊
----------------解决方案--------------------------------------------------------
沉的好快,顶
----------------解决方案--------------------------------------------------------
我记得我已经硕果这个问题了
如果用scanf("%s",s)输入一个字符串的时候
它要求要有一个回车符作为输入的结束标志
如果在你的字符串的后面还有"%d"等要求输入一个数字的要求
放在一起是不行的
因为它把你后面的所有的输入全当成字符串
所以你的数字是没有任何的输入
----------------解决方案--------------------------------------------------------
如果不提出一些粗心错误
比如 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 当成字符串处理了,主要问题已经给出,剩下的自己想想啦
----------------解决方案--------------------------------------------------------
收到,
c的输入输出有点繁,
因为我习惯了,scanf("%d,...);
觉得有个豆号分割好判断一点,
受教了,谢谢啊
----------------解决方案--------------------------------------------------------