C语言代码示例,用于记录系统故障的日期、时间和描述,并循环保存在一个循环队列中
时间: 2024-01-22 14:20:51 浏览: 110
以下是一个简单的C语言代码示例,用于记录系统故障的日期、时间和描述,并循环保存在一个循环队列中:
```
#include <stdio.h>
#include <time.h>
#include <string.h>
#define MAX_ENTRIES 10
struct entry {
char date[20];
char time[20];
char description[100];
};
struct entry log[MAX_ENTRIES];
int start = 0;
int end = -1;
int count = 0;
void add_entry(char *description) {
time_t current_time;
struct tm *time_info;
char time_str[20];
char date_str[20];
time(¤t_time);
time_info = localtime(¤t_time);
strftime(time_str, sizeof(time_str), "%H:%M:%S", time_info);
strftime(date_str, sizeof(date_str), "%Y-%m-%d", time_info);
end = (end + 1) % MAX_ENTRIES;
strcpy(log[end].time, time_str);
strcpy(log[end].date, date_str);
strcpy(log[end].description, description);
if (count < MAX_ENTRIES) {
count++;
} else {
start = (start + 1) % MAX_ENTRIES;
}
}
void print_log() {
int i;
int j = start;
for (i = 0; i < count; i++) {
printf("%s %s: %s\n", log[j].date, log[j].time, log[j].description);
j = (j + 1) % MAX_ENTRIES;
}
}
int main() {
add_entry("System crashed");
add_entry("Disk full");
add_entry("Memory leak");
print_log();
return 0;
}
```
这个代码示例定义了一个结构体 `entry`,用于存储每个日志条目的日期、时间和描述。日志条目被存储在一个循环队列中,该队列可以容纳最多 `MAX_ENTRIES` 条目。
添加新条目时,程序使用 `time` 函数获取当前日期和时间,并将它们存储在 `time_str` 和 `date_str` 字符串中。然后,程序将这些字符串和提供的描述一起存储在新的 `entry` 结构体中,并将其添加到日志队列的末尾。如果队列已满,则程序将删除队列中的最旧条目,并在队列末尾添加新条目。
最后,程序定义了一个 `print_log` 函数,它遍历日志队列并将每个条目的日期、时间和描述打印到控制台上。在 `main` 函数中,程序添加了三条示例日志条目并打印整个日志。
阅读全文