scanf的一个扩展的输入格式

 #include <stdio.h> #include <string.h> int main(int argc, char* argv[]) { char szBuffer[20] = {0}; scanf("%[a-z]",szBuffer); printf("您的输入:%s/n",szBuffer); fflush(stdin); memset(szBuffer, 0, 20); scanf("%[^a-z]",szBuffer); printf("您的输入:%s/n",szBuffer); return 0; } 上面的两个scanf的格式比较特殊。第一个表示输入字符串, 直到遇到不在a-z中的一个字符则结束输入。     后者相反, 输入字符串,直到遇到a-z中的一个字符则结束输入。

如,对于上面的程序运行:

 scanf的一个扩展的输入格式_第1张图片输入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.

 

你可能感兴趣的:(input,扩展,character,include,extension,whitespace)