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

C语言中输出日期需要使用什么格式说明符?

问题原因分析

你代码中输出为0的核心原因不是格式符使用错误,而是int birthday = 22/07/2003;本身的运算逻辑就有问题:

  • C语言中/运算符两侧均为整数时会执行整数除法,运算顺序从左到右
  • 首先计算22/07:注意带前导0的整数是八进制数,此处07等价于十进制7,22除以7的整数结果为3
  • 再计算3/2003,整数除法结果为0,因此birthday变量存储的值本身就是0,自然输出为0
正确解决方案

根据使用场景可以选择以下三种常用方案:

场景1:仅需要固定输出指定日期字符串

直接将日期存储为字符串输出即可,无需使用整型存储:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char charactername[] = "Ruby";
    int age =18;
    printf("Once upon a time there was girl named %s\n",charactername);
    printf("%s was %d years old\n",charactername,age);

    age =19;
    // 用字符串存储日期
    char birthday[] = "22/07/2003";

    printf("on %s she was born\n",birthday);
    printf("On 22/07/2022 she will become %d",age);

    return 0;
}

场景2:需要单独存取年/月/日做后续计算

分别定义三个整型变量存储日、月、年,输出时按格式拼接即可:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char charactername[] = "Ruby";
    int age =18;
    printf("Once upon a time there was girl named %s\n",charactername);
    printf("%s was %d years old\n",charactername,age);

    age =19;
    // 分开存储年月日
    int birth_day = 22, birth_month = 7, birth_year = 2003;

    // %02d表示不足2位时左侧补0,保证月日始终是两位格式
    printf("on %02d/%02d/%d she was born\n", birth_day, birth_month, birth_year);
    printf("On 22/07/2022 she will become %d",age);

    return 0;
}

场景3:需要处理日期计算、动态获取时间等复杂操作

可以引入C标准库time.h的相关接口处理时间类型,适配复杂的日期操作需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:36:03