山水沐光 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:无输出。以#号为结束,内容不赋值给变量。