输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。 输出格式: 在一行中按照“yyyy-mm-dd”的格式给出年、月、日。 输入样例: 03-15-2017 输出样例: 2017-03-15用C语言编写
时间: 2024-10-21 11:02:07 浏览: 103
发布日期: 2009年02月14日
你可以使用C语言中的结构体和库函数`strptime`和`strftime`来实现这个转换。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define INPUT_FORMAT "%m-%d-%Y"
#define OUTPUT_FORMAT "%Y-%m-%d"
int main() {
char input_date[11];
scanf("%s", input_date); // 读取输入日期
struct tm timeinfo;
if (strptime(input_date, INPUT_FORMAT, &timeinfo)) { // 解析输入格式
time_t timestamp = mktime(&timeinfo); // 转换为时间戳
struct tm* new_time = localtime(×tamp); // 格式化为本地时间
char output_date[11];
strftime(output_date, sizeof(output_date), OUTPUT_FORMAT, new_time); // 输出格式化
printf("%s\n", output_date);
} else {
printf("Invalid date format.\n");
}
return 0;
}
```
在这个程序中,我们首先读取用户输入的字符串,然后使用`strptime`将其解析为`struct tm`结构,接着将这个结构转换为Unix时间戳,最后再次格式化为指定的输出格式。
注意:这个程序假定输入的日期格式始终是`"mm-dd-yyyy"`。如果需要处理更复杂的输入情况,可能需要添加额外的错误检查。
阅读全文