scanf的用法

参考博客:https://blog.csdn.net/Believe_jt/article/details/129344264

1 限定读取长度

#include <stdio.h>
int main() {
    int n;
    float f;
    char str[23];
    scanf("%2d", &n);
    scanf("%*[^\n]"); scanf("%*c");  //清空缓冲区
    scanf("%5f", &f);
    scanf("%*[^\n]"); scanf("%*c");  //清空缓冲区
    scanf("%19s", str);
    printf("n=%d, f=%g, str=%s\n", n, f, str);
    return 0;
}

2 读取指定字符集

#include <stdio.h>
int main(){
    char str[30];
    scanf("%[abcd]", str);
    printf("%s\n", str);
    return 0;
}

字符集范围简写

#include <stdio.h>
int main(){
    char str[30];
    scanf("%[a-zA-Z]", str);  //只读取字母
    printf("%s\n", str);
    return 0;
}

读取不包含字符集

#include <stdio.h>
int main(){
    char str1[30], str2[30];
    scanf("%[^0-9]", str1);
    scanf("%*[^\n]"); scanf("%*c");  //清空缓冲区
    scanf("%[^\n]", str2);
    printf("str1=%s \nstr2=%s\n", str1, str2);
    return 0;
}

读取一行

#include<stdio.h>
int main()
{
    char str[21];
    scanf("%[^0-9\n]", str);
    printf("%s", str);
    return 0;
}

scanf() 控制字符串的完整写法为:

%{*} {width} type

其中,{ } 表示可有可无。各个部分的具体含义是:

type表示读取什么类型的数据,例如 %d、%s、%[a-z]、%[^\n] 等;type 必须有。

width表示最大读取宽度,可有可无。

*表示丢弃读取到的数据,可有可无。

文章目录