0

我知道为了使用 scanf 来获取包含空格的输入字符串,我们使用如下调用:

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

这将匹配所有字符直到新行。但是我发现了另一个scanf的调用:

scanf("%[ A-Za-z]",str);

对我来说,两者都工作正常!但我无法弄清楚两者之间有什么区别!?

在处理带空格的字符串时应该使用哪种方法?

4

2 回答 2

5

两者有什么区别!?

第一个扫描换行符之前的所有内容,第二个仅扫描字母和空格。

在处理带空格的字符串时应该使用哪种方法?

两者都没有,请看一下fgets()

char buf[LINE_MAX];
fgets(buf, sizeof(buf), stdin);
于 2013-06-08T15:13:19.687 回答
0

如果你使用第一个省略换行符并接受除它之外的每个字符,那就更好了。这意味着您可以提供完整的行,并且 scanf 将在您按 Enter 时结束读取。它类似于gets()可以从 string.h 中包含的函数

于 2013-06-08T16:30:12.423 回答