结构体统计学生成绩,if不起作用

结构体统计学生成绩,哪里出错了?
#include<stdio.h>
struct Student
{int num;
char name[20];
float score;
struct Studentnext;
}stu[10];
int i,j,k;
struct Student
scan()
{
printf("please input the information\n");
for(i=0;i<10;i++)
{
scanf("%d,%s,%f",&stu[i].num,stu[i].name,&stu[i].score);
if(stu[i].score>100.0)
{printf("\nthe num is error,input all the information again\n");i--;}
}
return(stu);
}
int main()
{scan();
return 0;
}

数据如何输入的,输入的成绩大于100吗

scanf("%d,%s,%f",&stu[i].num,stu[i].name,&stu[i].score);中"%d,%s,%f"用逗号分隔,在输入数值时用逗号分隔,如 2,aaa,73
但是%s会读取逗号,stu[i].name读取的是"aaa,73", 之后stu[i].score读取的是下一个数据的num值
可以改成 scanf("%d,%[^, ],%f", &stu[i].num, stu[i].name, &stu[i].score);
%[^, ],不会读取逗号
或者scanf中改成"%d %s %f"用空格分隔,在输入数值时也用空格分隔,如 2 aaa 73

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img