关于C语言输入问题~~

来源:百度知道 编辑:UC知道 时间:2024/05/17 14:44:53
#include<stdio.h>
struct student
{
int num;
char name[20];
float score[3];
}record[5];
void print(struct student *p)
{
int i;
printf(" num name score[0] score[1] score[2]\n");
for(i=0;i<5;i++)
printf("%5d%20s %8.2f %8.2f %8.2f\n",(p+i)->num,(p+i)->name,(p+i)->score[0],(p+i)->score[1],(p+i)->score[2]);

}
void main()
{
int i;
struct student *p;
p=&record;
printf("Please input the record(num name score[0] score[1] score[2]):\n");
for(i=0;i<5;i++)
{
scanf("%d,%s,%f,%f,%f",&record[i].num,record[i].name,&record[i].score[0],&record[i].score[1],&record[i].score[2]);
}
print(p);
getch();
}
我输入100,LI san,100,99,67
等等,一共输入5组
结果显示:100 Li san,100,99,67 0.00 0.00 0.00
我想要的显

#include<stdio.h>
struct student
{
int num;
char name[20];
float score[3];
}record[5];
void print(struct student *p)
{
int i;
printf(" num name score[0] score[1] score[2]\n");
for(i=0;i<5;i++)
printf("%5d%20s %8.2f %8.2f %8.2f\n",(p+i)->num,(p+i)->name,(p+i)->score[0],(p+i)->score[1],(p+i)->score[2]);

}
void main()
{
int i;

printf("Please input the record(num name score[0] score[1] score[2]):\n");
for(i=0;i<5;i++)
{
scanf("%d%s%f%f%f",&record[i].num,&record[i].name,&record[i].score[0],&record[i].score[1],&record[i].score[2]);
} //输入时去掉%d等后面的逗号
struct student *p; //放到下面定义
p=record;
print(p);
//getch();
}

从控制台输入的时候不好去判断字符串何时结束,
所以你在scanf("..20s,的时候就出现问题了,它把后面输入的score全部给吃掉了。

如果需要修改程序,你只需修改这一处即可

因为scanf要求照原样输入…你那样