C语言如何删除文件内容?

编号分类名称时间价格1饮料可乐2012-5-63.52水果香蕉2012-5-44.53糖类奶糖2012-511.0。。。。。。(文件内容如上)请问如何根据编号删除相应的物... 编号 分类 名称 时间 价格
1 饮料 可乐 2012-5-6 3.5
2 水果 香蕉 2012-5-4 4.5
3 糖类 奶糖 2012-5 1 1.0
。。。。。。
(文件内容如上)
请问如何根据编号删除相应的物品信息!
我用的是结构体,求代码,急急急啊
展开
 我来答
阿鑫聊生活
高粉答主

2019-06-19 · 生活知识分享小达人,专注于讲解生活知识。
阿鑫聊生活
采纳数:1217 获赞数:235097

向TA提问 私信TA
展开全部

1、打开Sublime Text软件,新建一个C语言文件,然后导入C语言库

2、接下来新建C语言的main函数,对文件的操作都会在main函数中进行

3、接下来调用C语言的fopen函数对文件进行打开操作

4、当打开文件以后就可以通过fgetc函数读取文件里面的内容

White_MouseYBZ
推荐于2017-09-23 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6783万
展开全部

重建一个临时文件,把原文件内容向临时文件里拷贝,遇到要删除的内容就跳过。结束后关闭文件,用remove("原文件名");把原文件删除,用rename("临时文件名","原文件名");把临时文件名改为原文件名就OK了。比如要按题面要求在原文件123.txt中删除编号为2和4的信息行,则可用以下代码实现:

//#include "stdafx.h"//If the vc++6.0, with this line.
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友58f1315
推荐于2017-09-10 · TA获得超过857个赞
知道小有建树答主
回答量:290
采纳率:83%
帮助的人:202万
展开全部
你平时应该有这样的经历,就是打开一个.txt格式的小说,在里面删除几个字,系统反应却很慢,这是为什么呢?
因为文件里的内容都是在硬盘上按顺序一个字节挨着一个字节摆放的,读取文件的时候,会从文件首地址一直读到文件结束标记“-1”。如果能够直接把文件里面的几个字节删掉,那么下次这个文件怎么读呢?怎么区分中间那几个字节被删掉了呢?
所以对于这些简单的文件来说,要想直接删除里面的内容是不可能的。
一般有两个方法实现这个功能:
1.把要保留的内容写到另一个文件中,要删掉的内容就不用写了。
2.把要保留的内容存储到一个字符串变量中,要删掉的内容不用存储,最后把这个字符串再写回到原文件中覆盖原来的内容。
更多追问追答
追问
可以给我源代码吗?
追答
可以啊。也就调用fread和fwrite两个函数而已。你把你结构体定义说下,我待会去导师那儿,回来后就给你敲下代码
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
政界5
2012-05-08 · 贡献了超过110个回答
知道答主
回答量:110
采纳率:0%
帮助的人:37.5万
展开全部
你是用的结构体吧,如果是,你可以先找到该编号的结构体再删除就好了啊!
更多追问追答
追问
我用的是结构休,可以给我代码吗?我想先把文件内容全部读到内存中,然后删除相应编号的物品,再重新写入文件,即用(W+)
追答
你把你的代码发过来 ,我给你看看,再写给你 发到1094130208@qq.com

对了,你发过来的是 你写的吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李磊921916
2012-05-08 · 超过11用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:33.7万
展开全部
写一个函数,进行删除 也可以的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式