2016-02-17 51 views
-2

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

我使用下面

#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; 
} 
+2

现在的问题是:什么是你的_delete_。是否足以用空白或零字节覆盖它?还是必须彻底删除它,即后续的内容被转移(这更乏味)。 – Ctx

+0

不相关,但'int * q; q = malloc(sizeof(int)); ..。 fread(q,...'是无意义的,使用int q; ... fread(&q,...'而不是 –

+1

...和'* fp2 = fopen(“sridhar.txt”,“r”) ;'应该是'fp2 = fopen(“sridhar.txt”,“r”);'。编译时启用所有警告 –

回答

0

代码没有基本文件删除操作(而且,任何内容被读取时,应该被删除)。您可以读/写但不能删除。删除是逻辑操作,你必须自己甚至以某种方式纪录删除或移动上要什么删除顶部的文件的剩余部分标记器具......

请注意,根本没有插入的操作,但对于删除的语义太多了插入现代文件系统没有为您提供一个,您必须自己创建一个(或使用此库,或像数据库一样的结构化访问层...)。

相关问题