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