注册 登录
编程论坛 C语言论坛

找大神求助,为啥这个是错的啊

杨大傻 发布于 2022-07-30 15:51, 1276 次点击
#include<stdio.h>
struct student
{
int xuehao;
char name[30];
float chengji;
}a,b;
int main()
{
printf("请输入第一位学生的学号、姓名和成绩:\n");
scanf("%d,%s,%f",&a.xuehao,a.name,&a.chengji);
printf("请输入第二个学生的学号、姓名和成绩:\n");
scanf("%d,%s,%f",&b.xuehao,b.name,&b.chengji);
printf("成绩较高者的信息如下:\n");
if(a.chengji>b.chengji)
printf("%d\t%s\t%f\n",a.xuehao,a.name,a.chengji);
else if(a.chengji<b.chengji)
 printf("%d\t%s\t%f\n",b.xuehao,b.name,b.chengji);
else
{
printf("%d\t%s\t%f\n",a.xuehao,a.name,a.chengji);
printf("%d\t%s\t%f\n",b.xuehao,b.name,b.chengji);
 }
return 0;
}
4 回复
#2
梦想远航lyz2022-07-30 16:38
和scanf格式解析有关
printf("请输入第一位学生的学号、姓名和成绩:\n");
scanf("%d", &a.xuehao);
scanf("%s", a.name);
scanf("%f", &a.chengji);
printf("请输入第二个学生的学号、姓名和成绩:\n");
scanf("%d", &b.xuehao);
scanf("%s", b.name);
scanf("%f", &b.chengji);
#3
rjsp2022-07-30 19:24
%s,

一个字符串的尾部若不是空白字符那一定会被%s读取,后面不可能是逗号

在解决这个问题前,先要确定一下 输入是不是必须以逗号分割?
如果不是的话,那别给自己添麻烦,就以默认的空白字符为分隔符;
如果是的话,"%d,%s,%f" 改为 "%d , %[^, \f\v\t\r\n] ,%f"
#4
杨大傻2022-08-01 13:48
回复 2楼 梦想远航lyz
谢谢
#5
杨大傻2022-08-01 13:50
回复 3楼 rjsp
谢谢
1