删除C中的文本块
请帮助我使用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
文件内容:
指标: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等函数,具体取决于您想要实现的内容和您拥有的数据类型