c语言输入日期输出第一次和第二次对应的年份和和天数
时间: 2024-10-13 14:19:12 浏览: 29
在C语言中,由于标准库并没有直接提供处理日期和时间的功能,你需要借助于第三方库或者自定义函数来完成这个任务。一个常见的做法是利用`struct tm`结构和`strftime`函数来操作日期。这里我们假设用户输入的是“年-月-日”格式的字符串,并且需要计算两次日期之间的天数差。
首先,创建一个函数接收日期字符串并转换成`tm`结构:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct tm parse_date(char *date_str) {
struct tm parsed;
sscanf(date_str, "%d-%d-%d", &parsed.tm_year, &parsed.tm_mon, &parsed.tm_mday);
parsed.tm_year -= 1900; // 将年份从1900开始计数
parsed.tm_mon--; // months start from 0
return parsed;
}
// 使用localtime将时间戳转换为tm结构
time_t mktime(struct tm *tm_time) {
return mktime(&tm_time->tm);
}
```
然后,你可以让用户输入两个日期,计算它们之间的天数差:
```c
int main() {
char date1[10], date2[10];
printf("请输入第一个日期 (格式: yyyy-mm-dd): ");
scanf("%s", date1);
printf("请输入第二个日期: ");
scanf("%s", date2);
struct tm tm1 = parse_date(date1);
struct tm tm2 = parse_date(date2);
time_t t1 = mktime(&tm1);
time_t t2 = mktime(&tm2);
double diff_days = difftime(t2, t1) / (60 * 60 * 24); // 转换为天数
printf("第一个日期 %s 对应的年份和天数:\n", date1, strftime("%Y", &tm1), (int)diff_days);
printf("第二个日期 %s 对应的年份和天数:\n", date2, strftime("%Y", &tm2), (int)diff_days);
return 0;
}
```
阅读全文