正则表达式
scanf() 函数的正则用法:
scanf("%[^ ]",str) 其中的 表示保存的字符串以换行符为截止,并且不存储该换行符号,这句话的作用是允许该函数读入除换行符以外的空白符(空格,table),平时输入时,scanf()不能像gets()一样读入空格等空白符;
scanf("%*[^ ]"); 其中 表示换行,其中*号表示该行内容不赋值给任何变量,直接跳过该行内容。
以下面的代码为例进行讨论
1 # include <stdio.h> 2 3 int main(void) 4 { 5 char str1[100]; 6 char str2[100]; 7 char str3[100]; 8 char str4[100]; 9 10 scanf("%[^ ]",str1); 11 scanf("%[^#]",str2); 12 scanf("%*[^ ]",str3); 13 scanf("%*[^#]",str4); 14 15 puts(str1); 16 puts(str2); 17 puts(str3); 18 puts(str4); 19 20 return 0; 21 }
输入内容: 其中的 表示换行
hello, world! //str1 hi,Alice. //str2 hei,Alice.# //str2 Hello,Friday! //str3 Hi,Morning!# //str3
输出内容:
hello, world! // str1 hi,Alice. // str2 hei,Alice. // str2
讨论:
str1:以换行符为结束,且能够将空格符号读入并赋值给变量;
str2:以#号为结束,可以读入换行符,并将内容赋值给变量;
str3:无输出。以换行符为结束,但是不赋值给变量;
str4:无输出。以#号为结束,内容不赋值给变量。