You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言中对字符串左截断?保留右侧4位数字

截取数字字符串的最后4位数字

方法一:直接处理字符串(推荐)

这种方法无需将字符串转为整数,避免大数字溢出问题,直接通过字符串索引截取目标内容:

#include <stdio.h>
#include <string.h>

int main()
{
    char val[20] = "1234567";
    int len = strlen(val);
    // 字符串长度≥4时取倒数4位,不足则取全部内容
    char *last_four = len >= 4 ? val + len - 4 : val;
    printf("%s\n", last_four);
    return 0;
}

原理:利用字符串的指针特性,val + len -4指向原字符串倒数第4个字符的位置,从该位置输出到字符串结尾,就是最后4位数字。如果原字符串长度不足4,直接输出全部内容。

方法二:通过整数取模处理

如果确定数字字符串不会超出整数范围,可以先转成整数,再对10000取模得到最后4位:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char val[20] = "1234567";
    // 用long long避免大数字溢出,适配更长的数字字符串
    long long num = atoll(val);
    int last_four = num % 10000;
    // %04d会自动补前导零(比如输入"123"输出"0123"),不需要补零则用%d
    printf("%04d\n", last_four);
    return 0;
}

你之前代码的问题

你使用的%-4d是左对齐输出整数,当整数位数超过4时,会完整输出整个数字,而非截取最后4位,因此无法达到预期效果。

内容的提问来源于stack exchange,提问作者eduardo franco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:37:44