scanf正则表达式部分总结

正则表达式

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

相关推荐