删除C中的文本块

删除C中的文本块,c,file,text,recording,C,File,Text,Recording,请帮助我使用C程序从文本文件中删除文本块: 示例: 文件内容: 指标:1;姓名:姓名;规格:规格 注释:注释bla bla bla ----- 指标:2;姓名:姓名;规格:规格 注释:注释bla bla bla ----- 指标:3;姓名:姓名;规格:规格 注释:注释bla bla bla ----- 在C程序中: 输入索引:2 那么文件的内容是: 指标:1;姓名:姓名;规格:规格 注释:注释bla bla bla ----- 指标:3;姓名:姓名;规格:规格 注释:注释bla bla bla

请帮助我使用C程序从文本文件中删除文本块: 示例:
文件内容:
指标:1;姓名:姓名;规格:规格
注释:注释bla bla bla
-----
指标:2;姓名:姓名;规格:规格
注释:注释bla bla bla
-----
指标:3;姓名:姓名;规格:规格
注释:注释bla bla bla
-----

在C程序中: 输入索引:2

那么文件的内容是:
指标:1;姓名:姓名;规格:规格
注释:注释bla bla bla
-----
指标:3;姓名:姓名;规格:规格
注释:注释bla bla bla
-----

我认为下一个算法是:我读取文件的内容。创建一个新文件。如果索引不是我输入的,则记录索引中的内容:n。。。到------到另一个文件。然后,当文件结束时,删除第一个文件并将第二个文件重命名为first。但我不知道如何让它成为现实

我所做的代码:

    char *filename, *p, *index, *tmp, *q; //variables
    int id, number;
    filename = (char*)malloc((L_tmpnam + 1) * sizeof(char)); //
    p = (char*)malloc(L_tmpnam * sizeof(char));
    tmp = (char*)malloc(10 * sizeof(char));
    puts("Enter the index");
    scanf("%d", &id);

    tmpnam(filename);
    p = strstr(filename, "Temp\\"); p += 5;
    *(p + (strlen(p) - 2)) = '\0';
    strcat(p, ".txt");
    FILE *f, *f2; //for first and second files
    f = fopen("catalog.txt", "rt"); //opening for reading
    f2 = fopen(p, "wt"); //opening for writing
    while (fscanf(f, "INDEX: %d; NAME: %s; SPEC: %s", number, "name", "spec") != EOF) { //checking if index is that I need
        if (number == id) { //here has to be NOT recording the content
            while (strcmp(tmp, "-----") != 0) continue;
        }
        else { //Here has to be recording the content to another file
        }
    }
    fcloseall(); // closing all the files

在文件中写入时,您可以使用fputs、fwrite、fprintf等函数,具体取决于您想要实现的内容和您拥有的数据类型