c语言中如何对文件的部分内容删除

我想过2种方法,一种是先把文件读入内存,删除后重写。但是觉得麻烦。另一种就是用写入退格符\b.但是我觉得用退格符会占内存,如果我对一个文件进行很多次的删除,那么文件中就会... 我想过2种方法,一种是先把文件读入内存,删除后重写。但是觉得麻烦。
另一种就是用写入退格符\b.但是我觉得用退格符会占内存,如果我对一个文件进行很多次的删除,那么文件中就会多很多退格符,请问我的理解有错吗。另外我想问问为什么\b为什么删除的是2个字节的内容,我想删除一个字符要怎么做?一个\b能删除结构体吗?
还有人有比较好的删除文件的部分内容的方法吗?
还要问的就是对文件信息的插入,能不能不用先读出再重写的方法,直接用其他函数和算法实现?
问题比较多,如果能解决的话,我会多加分的!
展开
 我来答
刺友互
高粉答主

2019-06-28 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:66.1万
展开全部

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函数向文件里添加字符串

tattackor
推荐于2018-02-26 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:862万
展开全部

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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
推荐于2017-11-26 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3598万
展开全部
文件是顺序存储的,你用退格键不能完成删除作用,那是用于显示屏的方法。
第1种方法可以,但由于文件可能尺寸较大,无法一次性全部读入内存,还要用到分块读入、写。
普通办法是:
打开输入文件
打开输出文件(另一个文件名)

分块将输入文件内容读入,读入当前块遇到要删除字符在内存中删除
将当前块写到输出文件
依此处理所有块

关闭输出文件
关闭输入文件
删除输入文件或改名
将输出文件改名成输入文件
对于文件来说,在其中删除或添加内容是比较繁琐的工作。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黑色夫子
2014-02-12 · TA获得超过542个赞
知道答主
回答量:219
采纳率:0%
帮助的人:83.8万
展开全部
用fread读出源文件,丢弃或修改一部分内容,然后再fwrite到另一个文件,大致就是这样吧。
追问:又没别的?这个我会
补充:就是这样的啊,你想修改文件当然是要先读文件,然后修改然后写入,没有其他的办法。
望采纳!
追问
不能直接fopen后,直接用某方法对文件内容进行删除操作吗。没有什么隐藏函数或者算法能实现吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Rankabc
2014-02-13 · TA获得超过3559个赞
知道大有可为答主
回答量:3705
采纳率:59%
帮助的人:1033万
展开全部
可以用另一个文件保存(不保存要删除的部分),然后写回原文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式