上面的两个scanf的格式比较特殊。第一个表示输入字符串, 直到遇到不在a-z中的一个字符则结束输入。 后者相反, 输入字符串,直到遇到a-z中的一个字符则结束输入。
如,对于上面的程序运行:
输入asdfsadfsadf, 第一次遇到回车符结束。 第二次遇到a就结束了输入。
msdn的说明:
Reading Undelimited strings
To read strings not delimited by whitespace characters, a set of characters in brackets ([ ]) can be substituted for the s (string) type character. The set of characters in brackets is referred to as a control string. The corresponding input field is read up to the first character that does not appear in the control string. If the first character in the set is a caret (^), the effect is reversed: The input field is read up to the first character that does appear in the rest of the character set.
Note that %[a-z] and %[z-a] are interpreted as equivalent to %[abcde...z]. This is a common scanf function extension, but note that the ANSI standard does not require it.