在C中捕获输入

时间:2019-06-11 17:44:32

标签: c

我是C编程的初学者,所以请保持友好!我正在尝试解决一些练习入门的挑战,而我目前正面临的挑战需要我捕捉文本输入。 在下面的简短代码中,所有内容都会捕获到第一个空格。之后,调试时什么也没出现。

我确实尝试过gets指令1,但是即使我在线上跟随示例,也无法编译

#include <stdio.h>
#include <string.h>

int main(void) {
char stringcapture[500];
scanf("%s", stringcapture);

LongestWords(stringcapture);       
return 0;
}

所以我试图将'stringcapture'传递给longestwords函数。但是,所有被捕获并因此通过的东西都是第一个单词,直到输入一个空格

1 个答案:

答案 0 :(得分:2)

"%s"仅捕获单词,并且如果检索到空格,则捕获停止。因此捕获将在发现的第一个空格处停止,这就是为什么您只有一个字的原因 请改用以下模式:

scanf("%[^\n\r]", str);

"%[^\n\r]"表示捕获所有字符,直到检索"\r""\n"

为防止源代码缓冲区溢出,您必须指定捕获的最大字符数。使用以下模式

char str[500];
scanf("%499[^\n\r]", str);