我知道为了使用 scanf 来获取包含空格的输入字符串,我们使用如下调用:
scanf("%[^\n]",str);
这将匹配所有字符直到新行。但是我发现了另一个scanf的调用:
scanf("%[ A-Za-z]",str);
对我来说,两者都工作正常!但我无法弄清楚两者之间有什么区别!?
在处理带空格的字符串时应该使用哪种方法?
两者有什么区别!?
第一个扫描换行符之前的所有内容,第二个仅扫描字母和空格。
在处理带空格的字符串时应该使用哪种方法?
两者都没有,请看一下fgets()
:
char buf[LINE_MAX];
fgets(buf, sizeof(buf), stdin);
如果你使用第一个省略换行符并接受除它之外的每个字符,那就更好了。这意味着您可以提供完整的行,并且 scanf 将在您按 Enter 时结束读取。它类似于gets()
可以从 string.h 中包含的函数