如何在C语言中将字符串格式的日期拆分成年、月、日整数变量?
如何从字符串中提取日期到整数变量
你可以使用sscanf()函数——它是scanf()的字符串版本,专门用于从内存中的字符串解析数据,完全符合你的需求。
完整实现代码
#include <stdio.h> int main () { char Date[] = "02/02/2023"; int Day, Month, Year; // 从字符串Date中解析日、月、年 sscanf(Date, "%d/%d/%d", &Day, &Month, &Year); // 按你期望的格式输出(%02d确保显示两位数字,不足时补零) printf("Day = %02d\n", Day); printf("Month = %02d\n", Month); printf("Year = %d\n", Year); return 0; }
关键说明
sscanf()的用法和scanf()几乎一致,唯一区别是它的第一个参数是要解析的目标字符串,而非控制台输入。- 格式字符串
%d/%d/%d对应日期的日/月/年分隔结构,必须和输入字符串的分隔符完全匹配(如果你的日期用-分隔,就改成%d-%d-%d)。 - 整数变量存储的是纯数值(比如
Day实际值为2),要显示带前导零的两位数字,需用%02d格式符输出,它会自动为不足两位的数字补零。
额外优化:严格格式校验
如果需要避免解析错误格式的日期(比如日/月超过两位),可以限定数字位数:
sscanf(Date, "%2d/%2d/%4d", &Day, &Month, &Year);
这样sscanf()只会读取前两位作为日/月,前四位作为年,减少格式不匹配导致的错误。
内容的提问来源于stack exchange,提问作者LoneWolf
相关产品推荐
相关产品推荐

