C语言中的格式限定符总结

常见的格式限定符

整数类型%d %i:有符号十进制整数

%u:无符号十进制整数

%ld:有符号长整型(long int

%lu:无符号长整型(unsigned long int

%lld:有符号长长整型(long long int

%llu:无符号长长整型(unsigned long long int

%o:无符号八进制整数

%x %X:无符号十六进制整数

浮点数类型%f:浮点数(float

%lf:双精度浮点数(double

%Lf:长双精度浮点数(long double

字符和字符串类型%c:单个字符

%s:字符串(以空格、换行符或制表符为终止符)

[%[characters]]:匹配指定字符集中的字符

指针类型%p:指针地址

宽度限制%Ns:读取最多 N 个字符的字符串(不包括终止符 \0

%Nc:读取最多 N 个字符

赋值抑制%*:跳过输入的值,不将其存储到变量中

示例

以下是一些使用不同格式限定符的示例:

#include <stdio.h>

int main(void)
{
    int i;
    unsigned int u;
    long int l;
    unsigned long int ul;
    float f;
    double d;
    char c;
    char str[50];

    // 读取有符号十进制整数
    printf("Enter an integer: ");
    scanf("%d", &i);
    printf("You entered: %d\n", i);

    // 读取无符号十进制整数
    printf("Enter an unsigned integer: ");
    scanf("%u", &u);
    printf("You entered: %u\n", u);

    // 读取有符号长整型
    printf("Enter a long integer: ");
    scanf("%ld", &l);
    printf("You entered: %ld\n", l);

    // 读取无符号长整型
    printf("Enter an unsigned long integer: ");
    scanf("%lu", &ul);
    printf("You entered: %lu\n", ul);

    // 读取浮点数
    printf("Enter a float: ");
    scanf("%f", &f);
    printf("You entered: %f\n", f);

    // 读取双精度浮点数
    printf("Enter a double: ");
    scanf("%lf", &d);
    printf("You entered: %lf\n", d);

    // 读取单个字符
    printf("Enter a character: ");
    scanf(" %c", &c); // 注意前面的空格,用于忽略前导空白字符
    printf("You entered: %c\n", c);

    // 读取字符串
    printf("Enter a string: ");
    scanf("%49s", str); // 限制输入长度,防止缓冲区溢出
    printf("You entered: %s\n", str);

    return 0;
}

注意事项

输入格式:确保输入的格式与 scanf 的格式限定符匹配,否则可能导致未定义行为。

%llu 是用于读取和打印 unsigned long long 类型的正确格式限定符。

%ull 并不是一个有效的格式限定符,不能将%ld、%lu、%llu等写成%dl、%ul、%ull等。

缓冲区溢出:对于字符串输入,建议使用宽度限制(如 %49s)来防止缓冲区溢出。

前导空白字符:在读取字符时,可以在格式字符串前加上空格(如 scanf(" %c", &c)),以忽略前导的空白字符。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值