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
相关产品推荐
相关产品推荐

