帮我写一个把错误时间格式转化为正确时间格式的c语言程序
时间: 2023-05-20 10:02:55 浏览: 114
c#环境下 时间转换程序编写
当然可以,以下是一个简单的C语言程序,可以将错误的时间格式转换为正确的时间格式:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char input[20];
printf("请输入错误的时间格式(例如:2021-13-32 25:61:61):");
scanf("%s", input);
// 分离年月日和时分秒
char year[5], month[3], day[3], hour[3], minute[3], second[3];
strncpy(year, input, 4);
year[4] = '\0';
strncpy(month, input+5, 2);
month[2] = '\0';
strncpy(day, input+8, 2);
day[2] = '\0';
strncpy(hour, input+11, 2);
hour[2] = '\0';
strncpy(minute, input+14, 2);
minute[2] = '\0';
strncpy(second, input+17, 2);
second[2] = '\0';
// 将字符串转换为整数
int y = atoi(year);
int m = atoi(month);
int d = atoi(day);
int h = atoi(hour);
int min = atoi(minute);
int sec = atoi(second);
// 判断是否合法
if (m < 1 || m > 12 || d < 1 || d > 31 || h < 0 || h > 23 || min < 0 || min > 59 || sec < 0 || sec > 59) {
printf("非法的时间格式!\n");
return 0;
}
// 判断是否闰年
int leap = 0;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
leap = 1;
}
// 判断每个月的天数
int days[13] = {0, 31, 28+leap, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (d > days[m]) {
printf("非法的时间格式!\n");
return 0;
}
// 输出正确的时间格式
printf("正确的时间格式为:%04d-%02d-%02d %02d:%02d:%02d\n", y, m, d, h, min, sec);
return 0;
}
```
输入错误的时间格式,程序会自动将其转换为正确的时间格式并输出。
阅读全文