ubantu 用C语言制作一个控制台小时钟,每隔一秒输出当前的系统时间。然后,扩展你的程序的灵活性,允许用户提供如输出频率,输出样式等选择
时间: 2024-03-24 08:36:32 浏览: 121
好的,我可以为您解答这个问题。首先,我们需要用 C 语言获取当前系统时间并输出到控制台。可以使用 time.h 头文件中的 time 函数来获取当前系统时间,并使用 printf 函数将其输出到控制台。以下是代码示例:
```c
#include <stdio.h>
#include <time.h>
int main() {
time_t current_time;
while (1) {
// 获取当前系统时间
time(¤t_time);
// 输出当前系统时间
printf("Current time: %s", ctime(¤t_time));
// 暂停一秒钟
sleep(1);
}
return 0;
}
```
现在,我们需要添加一些灵活性来允许用户选择输出频率和样式。可以使用命令行参数来传递这些选项。以下是更新后的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
// 默认输出频率为 1 秒钟
int output_frequency = 1;
// 默认输出样式为时间戳
char* output_style = "timestamp";
int main(int argc, char *argv[]) {
time_t current_time;
// 检查命令行参数
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "-f") == 0) {
// 设置输出频率
output_frequency = atoi(argv[i+1]);
} else if (strcmp(argv[i], "-s") == 0) {
// 设置输出样式
output_style = argv[i+1];
}
}
while (1) {
// 获取当前系统时间
time(¤t_time);
// 根据输出样式输出当前系统时间
if (strcmp(output_style, "timestamp") == 0) {
printf("Current time: %s", ctime(¤t_time));
} else if (strcmp(output_style, "hour:minute") == 0) {
printf("%02d:%02d\n", localtime(¤t_time)->tm_hour, localtime(¤t_time)->tm_min);
} else {
printf("Invalid output style\n");
break;
}
// 暂停指定时间
sleep(output_frequency);
}
return 0;
}
```
现在,用户可以通过命令行参数 `-f` 和 `-s` 来选择输出频率和样式。例如,运行 `./clock -f 5 -s hour:minute` 将以每 5 秒钟为间隔输出当前小时和分钟。
阅读全文