C中不同类型的scanf用法

时间:2013-06-08 15:09:04

标签: c scanf

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:5)

  

这两者有什么区别!?

第一个扫描所有内容直到换行符,第二个扫描字母和空格。

  

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

两者都没有,请改为fgets()

char buf[LINE_MAX];
fgets(buf, sizeof(buf), stdin);

答案 1 :(得分:0)

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