我需要从用户那里获得包含空格的单词,正如我在带有struct语句的标题中所表达的那样。
例如:
#include <stdio.h>
struct knowledge
{
char name[30];
}person;
int main()
{
scanf("%s",person.name);
printf("\n\n%s",person.name);
}
当我运行此程序并输入“句子”之类的句子时,没有问题。它再次向我显示“句子”。 但是,当我输入“句子aaa”时,它只显示第一个单词(“句子”)。这是怎么回事?为什么它没有告诉我所有(“句子aaa”)我进入了?
答案 0 :(得分:0)
%s
格式说明符在遇到空格或流结束时停止扫描。因此,你不能输入一个&#34;句子&#34; space
使用scanf()
和%s
。
扫描 a&#34;整行&#34;如果是空格,则需要使用fgets()
。
答案 1 :(得分:0)
而不是scanf()
使用
fgets(person.name,sizeof(person.name),stdin);
使用scanf()
读取字符串总是一个坏主意。最好的选择是使用fgets()
来避免缓冲区溢出。
PS:fgets()
附带换行符