在c中获取包含空格的单词

时间:2015-06-09 16:12:16

标签: c

我需要从用户那里获得包含空格的单词,正如我在带有struct语句的标题中所表达的那样。

例如:

#include <stdio.h>

struct knowledge
{
   char name[30];
}person;


int main()
{
   scanf("%s",person.name);
   printf("\n\n%s",person.name);
}

当我运行此程序并输入“句子”之类的句子时,没有问题。它再次向我显示“句子”。 但是,当我输入“句子aaa”时,它只显示第一个单词(“句子”)。这是怎么回事?为什么它没有告诉我所有(“句子aaa”)我进入了?

2 个答案:

答案 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()附带换行符