C 不能输入带空格的字符串

来源:百度知道 编辑:UC知道 时间:2024/06/08 04:13:29
我知道用gets()
但是
printf("Student %d:\n",i+1);
printf("ID:");
scanf("%d",&p1->id);
printf("Name:");
gets(p1->name);
printf("Score:");
scanf("%f",&p1->socre);
这里就是不管用!!!!!!
空格后SCORE就不能输入自动跳过!!!!!为什么!

到底,你的输入是什么?是name无法输入的吧?

scanf("%d",&p1->id);
修改为:
scanf("%d%*c",&p1->id);

加%*c,是为了略过输入id时的回车符号,因为这个回车符号影响gets(name)

printf("Student %d:\n",i+1);
printf("ID:");
scanf("%d",&p1->id);
printf("Name:");
fflush(stdin);
gets(p1->name);
fflush(stdin);
printf("Score:");
scanf("%f",&p1->socre);

调用fflush。
以后你就知道了,现在不想在这里做过多解释!

用getline函数试试看,有些程序以空格符作为一个单词的结束

在scanf的下一句加一个gets()
就可以了