如何在C中同时读取和删除文件内容

时间:2016-02-17 09:24:15

标签: c

我正在使用fread进行文件读取,如下面的代码所示。请帮我看看如何立即删除我完成阅读的文件的内容。因此,如果我读取一个值,从文件中删除该值并执行fclose。稍后当我打开文件时,文件应该只剩下两个值。 我不知道要删除哪个函数。请帮我。 (哪些内容被阅读,应该被删除)

我正在使用以下代码

#include<stdio.h>
#include <stdlib.h>
int main()
{

int *p; 

p = malloc(sizeof(int));
p1 = malloc(sizeof(int));
p2 = malloc(sizeof(int));

*p = 5;
*p1 = 6;
*p2 = 7;
FILE *fp1 = fopen("sridhar.txt","w");
 fwrite(p,sizeof(int),1,fp1);
 fwrite(p1,sizeof(int),1,fp1);
 fwrite(p2,sizeof(int),1,fp1);
 fclose(fp1);

 printf("\n Value of p p1 p2 written into the file is :%d \n",*p,*p1,*p2);

int *q, *q1, *q2;
FILE *fp2 = fopen("sridhar.txt","r");

q = malloc(sizeof(int));
q1 = malloc(sizeof(int));
q2 = malloc(sizeof(int));


fread(q,sizeof(int),1,fp2);
fclose(fp2); // Delete Logic may come here

*fp2 = fopen("sridhar.txt","r");
fread(q1,sizeof(int),1,fp2);
fclose(fp2);
// Delete Logic In here

*fp2 = fopen("sridhar.txt","r");
fread(q2,sizeof(int),1,fp2);
fclose(fp2);
// Delete logic here 

 printf("\n Value of q q1 q2 read from the file is :%d %d %d\n",*q, *q1,     *q2);

 return 0;
 }

1 个答案:

答案 0 :(得分:0)

基本文件上没有删除操作。您可以读/写但不能删除。删除是一个逻辑操作,您必须自己实现,即使以某种方式将记录标记为已删除或将文件的剩余部分移到您想要的内容之上的删除 ...

请注意,根本没有 insert 操作, delete insert 的语义太多,以至于现代文件系统没有&#39 ; t为您提供一个,您必须自己构建一个(或使用库,或像数据库一样使用结构化访问层......)。