scanf占位符的一些用法

1.限制输入数据的长度

int main()
{
    int a = 123456;

    scanf("%3d", &a);
    printf("%d", a);

    return 0;
}

如果输入的值大于3位则最多读取输入的只读取前3位数据。

2.匹配特定字符

char ss[6];
scanf("%[abcd]", ss);

%[abcd]表示只读取字符abcd遇到其它的字符就读取结束,如果abcd字符在字符串的中间部分那么就不能正常读取字符。

如果输入的字符中间有空格符,则需要特定字符中也要有空格符。

char ss[6];
scanf("%[a-c e-z]", ss);

这样的话就可以输入i o v e,这种带有空格的格式。

3、过滤掉某些字符

不匹配某些字符只需要在[ ]内的最前面加一个^就可以了。

char ss[6];
scanf("%[^a-d]", ss);
表示匹配除a-b之外的所有字符,遇到到a-b的字符就结束输入。

4、丢弃读取到的字符

具体方法就是在 % 后面加一个*。

char ss[6];
scanf("%*[a-d]", ss);

如果出现有输入abcdABCDabcd,则输出为ABCDabcd。

你可能感兴趣的:(c语言初学者,算法,数据结构,c语言,青少年编程,学习)