C语言,学院计划在新年举行联欢晚会,要求每个班级都要准备节目,为了让班级上有紧迫感,班长希望编写一个倒计时程序,输入日期显示距离下一个新年的天数days。例如输入“2021-11-11”,显示“还有51天到新年”。
时间: 2024-12-02 20:22:32 浏览: 18
在C语言中,为了实现这样的功能,你需要获取当前日期和用户输入的日期,然后计算两个日期之间的差值。可以利用`time_t`和`struct tm`数据结构以及相关的函数如`strptime`、`difftime`等。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
// 将字符串转换成struct tm
struct tm* str_to_tm(const char* date_str, const char* format) {
struct tm* timeinfo = NULL;
timeinfo = strptime(date_str, format, timeinfo);
if (!timeinfo) {
perror("strptime failed");
exit(EXIT_FAILURE);
}
return timeinfo;
}
int main() {
const char* input_date_format = "%Y-%m-%d";
const char* current_date = "now"; // 获取当前日期
char user_input[30];
printf("请输入距离新年的天数(格式:YYYY-MM-DD):");
fgets(user_input, sizeof(user_input), stdin);
user_input[strcspn(user_input, "\n")] = '\0'; // 移除换行符
struct tm input_time = *str_to_tm(user_input, input_date_format);
time_t tme1 = mktime(&input_time);
struct tm current_time = *str_to_tm(current_date, "now");
time_t tme2 = mktime(¤t_time);
double diff = difftime(tme1, tme2);
int days_to_new_year = static_cast<int>(diff / (60 * 60 * 24)); // 转化为天数
printf("还有%zd天到新年。\n", days_to_new_year);
return 0;
}
```
请注意,上述代码假设了用户输入的是正确的日期格式,并且`mktime`和`difftime`的使用可能因平台而异。实际项目中,你可能需要对错误处理做进一步完善。
阅读全文