月-日-年的格式输入数据,用C语言
时间: 2024-10-19 08:09:29 浏览: 18
在C语言中,处理月-日-年这样的日期格式通常需要借助结构体和库函数,因为标准C库并没有直接支持这种日期格式解析的功能。你可以自定义一个结构体来表示日期,例如:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int year;
int month;
int day;
} Date;
Date parse_date(char *date_str) {
char *endptr;
int year, month, day;
year = strtol(date_str, &endptr, 10);
if (*endptr == '-' && endptr[1] != '\0') {
++endptr;
month = strtol(endptr, &endptr, 10);
if (*endptr == '-' && endptr[1] != '\0') {
++endptr;
day = strtol(endptr, NULL, 10);
if (day > 0 && day <= 31 && month > 0 && month <= 12)
return (Date){year, month, day};
else
printf("Invalid date: %s\n", date_str);
} else {
printf("Invalid date format: %s\n", date_str);
}
} else {
printf("Invalid date format: %s\n", date_str);
}
// 如果这里没有返回,可能会导致未初始化的Date结构体
return (Date){0, 0, 0};
}
int main() {
char input[] = "12-31-2023";
Date parsed_date = parse_date(input);
// 现在parsed_date包含解析后的年、月、日
printf("Parsed date: %d-%d-%d\n", parsed_date.year, parsed_date.month, parsed_date.day);
return 0;
}
```
在这个示例中,`parse_date` 函数尝试从给定字符串 `date_str` 中解析出年、月、日,并检查它们是否有效。如果有效,它会创建一个新的 `Date` 结构体并返回;否则,函数将打印错误消息。
阅读全文