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