“制作一个控制台小时钟,每隔一秒输出当前的系统时间。然后,拓展你程序的灵活性,允许用户提供如输出频率,输出样式等选择”用c语言实现
时间: 2024-03-24 11:38:59 浏览: 52
好的,下面是一个使用C语言实现的控制台小时钟程序,每隔一秒输出当前的系统时间:
```c
#include <stdio.h>
#include <time.h>
#include <unistd.h>
int main() {
while (1) {
time_t now = time(NULL);
printf("%s", ctime(&now));
sleep(1);
}
return 0;
}
```
接下来,我们实现拓展程序的灵活性,允许用户提供如输出频率,输出样式等选择。我们可以使用命令行参数来指定这些选项。
下面是一个示例程序,它允许用户通过命令行参数来指定输出频率和输出样式:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char *argv[]) {
int frequency = 1; // 默认输出频率为1秒钟1次
char format[256] = "%c"; // 默认输出样式为完整的日期和时间
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "-f") == 0 && i + 1 < argc) {
// 如果用户指定了输出频率
frequency = atoi(argv[i + 1]);
i++;
} else if (strcmp(argv[i], "-s") == 0 && i + 1 < argc) {
// 如果用户指定了输出样式
strncpy(format, argv[i + 1], sizeof(format));
i++;
}
}
while (1) {
for (int i = 0; i < frequency; i++) {
time_t now = time(NULL);
struct tm *tm_now = localtime(&now); // 转换为本地时间
char buffer[256];
strftime(buffer, sizeof(buffer), format, tm_now); // 格式化时间
printf("%s\n", buffer);
}
sleep(1);
}
return 0;
}
```
在上面的程序中,我们使用了两个命令行参数来指定输出频率和输出样式:
- `-f`: 指定输出频率,后面跟一个数字,表示每秒钟输出多少次时间。例如,`-f 2` 表示每秒钟输出2次时间。
- `-s`: 指定输出样式,后面跟一个字符串,表示时间的格式化字符串。例如,`-s "%H:%M:%S"` 表示只输出小时、分钟和秒。
程序在循环中每秒钟输出一次时间,如果用户指定了输出频率,程序会在一秒钟内按照指定的频率输出多次时间。程序使用`strftime()`函数将时间格式化为字符串,然后输出。用户可以通过指定格式化字符串来自定义输出样式。
例如,用户可以通过以下命令来输出每秒钟两次时间,并且只输出小时、分钟和秒:
```
$ ./clock -f 2 -s "%H:%M:%S"
```
这将输出形如“14:30:10”的时间字符串。
阅读全文