我正在尝试实现一个简单的命令历史记录。该程序将所有命令写入文本文件,但我希望它只存储最后10个命令。
#include <stdio.h>
#include <string.h>
#define SIZE 10
void last_ten_commands(char *command)
{
FILE *fp;
fp = fopen("history.txt", "a+");
fprintf(fp, "%s\n", command);
fclose(fp);
}
int main(void)
{
char command[SIZE];
fputs("Enter the command\n", stdout);
while (1) {
scanf("%s", command);
if (strcmp(command,"exit") == 0)
break;
last_ten_commands(command);
}
return 0;
}
答案 0 :(得分:3)
最简单的方法是将历史列表保留在程序内部,作为一个简单的十元素数组,并在历史记录发生变化时将数组刷新为文件。
要知道数组中要放置下一个元素的索引,请使用例如
current_index = (current_index + 1) % 10;
这将确保你不会超出数组的范围,并且当它到达第十个元素时它会循环。
对于历史数组,它可以是char *
或类似的简单数组。