c语言中如何对文件的部分内容删除
我想过2种方法,一种是先把文件读入内存,删除后重写。但是觉得麻烦。另一种就是用写入退格符\b.但是我觉得用退格符会占内存,如果我对一个文件进行很多次的删除,那么文件中就会...
我想过2种方法,一种是先把文件读入内存,删除后重写。但是觉得麻烦。
另一种就是用写入退格符\b.但是我觉得用退格符会占内存,如果我对一个文件进行很多次的删除,那么文件中就会多很多退格符,请问我的理解有错吗。另外我想问问为什么\b为什么删除的是2个字节的内容,我想删除一个字符要怎么做?一个\b能删除结构体吗?
还有人有比较好的删除文件的部分内容的方法吗?
还要问的就是对文件信息的插入,能不能不用先读出再重写的方法,直接用其他函数和算法实现?
问题比较多,如果能解决的话,我会多加分的! 展开
另一种就是用写入退格符\b.但是我觉得用退格符会占内存,如果我对一个文件进行很多次的删除,那么文件中就会多很多退格符,请问我的理解有错吗。另外我想问问为什么\b为什么删除的是2个字节的内容,我想删除一个字符要怎么做?一个\b能删除结构体吗?
还有人有比较好的删除文件的部分内容的方法吗?
还要问的就是对文件信息的插入,能不能不用先读出再重写的方法,直接用其他函数和算法实现?
问题比较多,如果能解决的话,我会多加分的! 展开
5个回答
展开全部
1、建立一个.c或者.cpp文件,还要建立一个.txt文件进行操作处理,并且写上c语言的编译预处理,头文件,主函数。
2、定一个文件指针,具体格式FILE*指针名。
3、调用fopen函数,对具体的格式为 文件指针=fopen("文件路径+文件名","读写方式");。
4、对于读写的方式有很多,比如r是只读,w是打开文件新建并且只写,r+是打开文件能读能写,w+新建文件能读能写。
5、如果程序把文件打开后不关闭,对于文件来说是很不安全的,所以需要关闭文件的函数fclose();如果想关闭p文件指针所指的文件,就写fclose(p);这个函数具有返回值,如果关闭成功,就返回0.如果关闭失败,就返回非0。
6、调用fprintf()函数往文件里加东西,或者调用fputc向文件里添加字符,还可以调用fputs函数向文件里添加字符串。
展开全部
1、删除文件部分内容的大概步骤:新建一个临时文件,把原文件内容向临时文件里拷贝,遇到要删除的内容就跳过。结束后关闭文件,用remove("原文件名");把原文件删除,用rename("临时文件名","原文件名");把临时文件名改为原文件名。
2、例如在原文件123.txt中删除以2和以4编号开头的行,可用以下代码实现:
#include "stdio.h"
#include "stdlib.h"
int main(void){
FILE *fin,*ftp;
char a[1000];
fin=fopen("123.txt","r");//读打开原文件123.txt
ftp=fopen("tmp.txt","w");//写打开临时文件tmp.txt
if(fin==NULL || ftp==NULL){
printf("Open the file failure...\n");
exit(0);
}
while(fgets(a,1000,fin))//从原文件读取一行
if(a[0]!='2' && a[0]!='4')//检验是要删除的行吗?
fputs(a,ftp);//不是则将这一行写入临时文件tmp.txt
fclose(fin);
fclose(ftp);
remove("123.txt");//删除原文件
rename("tmp.txt","123.txt");//将临时文件名改为原文件名
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
文件是顺序存储的,你用退格键不能完成删除作用,那是用于显示屏的方法。
第1种方法可以,但由于文件可能尺寸较大,无法一次性全部读入内存,还要用到分块读入、写。
普通办法是:
打开输入文件
打开输出文件(另一个文件名)
分块将输入文件内容读入,读入当前块遇到要删除字符在内存中删除
将当前块写到输出文件
依此处理所有块
关闭输出文件
关闭输入文件
删除输入文件或改名
将输出文件改名成输入文件
对于文件来说,在其中删除或添加内容是比较繁琐的工作。
第1种方法可以,但由于文件可能尺寸较大,无法一次性全部读入内存,还要用到分块读入、写。
普通办法是:
打开输入文件
打开输出文件(另一个文件名)
分块将输入文件内容读入,读入当前块遇到要删除字符在内存中删除
将当前块写到输出文件
依此处理所有块
关闭输出文件
关闭输入文件
删除输入文件或改名
将输出文件改名成输入文件
对于文件来说,在其中删除或添加内容是比较繁琐的工作。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用fread读出源文件,丢弃或修改一部分内容,然后再fwrite到另一个文件,大致就是这样吧。
追问:又没别的?这个我会
补充:就是这样的啊,你想修改文件当然是要先读文件,然后修改然后写入,没有其他的办法。
望采纳!
追问:又没别的?这个我会
补充:就是这样的啊,你想修改文件当然是要先读文件,然后修改然后写入,没有其他的办法。
望采纳!
追问
不能直接fopen后,直接用某方法对文件内容进行删除操作吗。没有什么隐藏函数或者算法能实现吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用另一个文件保存(不保存要删除的部分),然后写回原文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询