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

如何从整数20230302中提取前4位、中间2位和后2位并分别存储?

提取整数中的指定分段数字

针对你需要从整数20230302中提取前4位、中间两位、最后两位到不同变量的需求,这里给你两种实用的实现方法:

方法一:数学运算(适合固定位数的整数)

因为目标数字是固定8位,直接用除法和取模运算就能快速拆分:

#include <stdio.h>

int main() {
    int num = 20230302;
    int year = num / 10000;       // 20230302 / 10000 = 2023
    int month = (num % 10000) / 100;  // 先取后4位0302,再除以100得到03
    int day = num % 100;          // 取最后两位02

    printf("年份:%d,月份:%d,日期:%d\n", year, month, day);
    return 0;
}

这种方法效率高,不需要额外的字符串操作,适合位数固定的场景。

方法二:字符串处理(灵活适配不同位数)

如果后续数字位数可能变化,把整数转成字符串后截取子串再转回整数会更灵活:

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

int main() {
    int num = 20230302;
    char str[20];
    sprintf(str, "%d", num);  // 把整数转成字符串

    int year = atoi(str);  // 直接取前4位(字符串前4个字符就是"2023")
    int month = atoi(str + 4);  // 从第5个字符开始取两位,即"03"
    int day = atoi(str + 6);  // 从第7个字符开始取两位,即"02"

    printf("年份:%d,月份:%d,日期:%d\n", year, month, day);
    return 0;
}

注意:atoi会自动忽略前导零,所以"03"转成整数后就是3,如果需要保留前导零的显示,输出时要用%02d格式。

你原来的代码是逐个拆分每一位数字,和提取连续多位的需求不匹配,所以用上面两种方法更直接。

内容的提问来源于stack exchange,提问作者DHEERAJ SWAROOP S M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:10:14