枉读计算机这么多年,今天却遇到这么丰富scanf的特殊方式!
师出有源:这篇博客写了今天要总结的东西。
- 输入固定个数的字符 :"%nc"方式,n为一个整数
//需要说明的地方时,该方式会严格读入5个任何字符(包括'\n')
//如果字符少于5个,那么等待输入
//同时和%s的输入不同的是,该方式不会在字符串末尾自动补一个null character ('\0')
char a[100];
scanf("%5c", a);
scanf("%5s", a); //该方式最多输入5个非空白字符(non whitespace )
- 正则表达式:格式可以为一个正则表达式
//很容易懂,该方式会在代码后自动补一个null character('\0')
char a[100];
scanf("%[^\n]")
3.过滤一个字符、数字。*号代表读入一个,但不输入到任何位置
char a[100];
scanf("%*c", a);
int num;
scanf("%*d", &num);
4.空白字符:convention speficier中的空白字符(包括\n),会匹配所有的空白字符,直到遇到第一个非空白字符。
//这种方式读入一行会有问题,原因在于在读入最后一次的时候,如果不遇到一个非空白字符,或者eof的时候,它会持续匹配所有的非空字符
//所以变现的问题是,自己在调试的时候,疯狂输入回车,表示终止运行,但并没有结束。
char a[100];
while (1)
scanf("%s\n", a);