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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 不能输入带空格的字符串相关的知识,希望对你有一定的参考价值。

我知道用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)
参考技术A 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。
以后你就知道了,现在不想在这里做过多解释!
参考技术B 用getline函数试试看,有些程序以空格符作为一个单词的结束 参考技术C 在scanf的下一句加一个gets()
就可以了

VS 中输入带空格的两个字符串

此博客链接:https://www.cnblogs.com/ping2yingshi/p/12364412.html

问题描述:vs中读取两个字符串,中间用空格分开。例如:abcde a3。

解决方法:

在变量后面添加定义的字符串数组长度。
例如:
while (~scanf_s("%s %s", huabutiao,1000, minshitiao,1000)){}。

写同样的一个程序,当输入带空格的字符串时,VS中需要多加一个参数。

DVV-C++ 和VS中输入带空格的字符串对比如下:

DVV-C++中:

while (scanf("%s%s", huabutiao, minshitiao)){}。

VS中:

while (~scanf_s("%s %s", huabutiao,1000, minshitiao,1000)){}。
    

 

以上是关于C 不能输入带空格的字符串的主要内容,如果未能解决你的问题,请参考以下文章

c语言中怎样用scanf()读入带空格的字符串

C语言用如何用scanf输入带有空格的字符串

c语言如何输出有空格的字符串

C语言用如何用scanf输入带有空格的字符串

java怎样读取带空格的字符串数组

为啥不能用scanf读入一个含有空格的字符串