如何只将最后10行写入C中的文件?

时间:2016-06-07 06:45:21

标签: c linux file

我正在尝试实现一个简单的命令历史记录。该程序将所有命令写入文本文件,但我希望它只存储最后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;
}

1 个答案:

答案 0 :(得分:3)

最简单的方法是将历史列表保留在程序内部,作为一个简单的十元素数组,并在历史记录发生变化时将数组刷新为文件。

要知道数组中要放置下一个元素的索引,请使用例如

current_index = (current_index + 1) % 10;

这将确保你不会超出数组的范围,并且当它到达第十个元素时它会循环。

对于历史数组,它可以是char *或类似的简单数组。