| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 728 人关注过本帖
标题:关于文件的问题
只看楼主 加入收藏
瓦力
Rank: 2
等 级:论坛游民
帖 子:41
专家分:27
注 册:2011-11-18
结帖率:100%
收藏
 问题点数:0 回复次数:17 
关于文件的问题
怎么修改已存在的文件
2012-03-25 21:54
zhoumh91
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2011-2-3
收藏
得分:0 
回复 楼主 瓦力
FILE *fp;
fp=fopen("文件名","a");
向文件中加入新数据
2012-03-25 22:16
瓦力
Rank: 2
等 级:论坛游民
帖 子:41
专家分:27
注 册:2011-11-18
收藏
得分:0 
回复 2楼 zhoumh91
修改,不是追加,我想把其中已存在的一项修改一下
2012-03-25 22:30
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
视你的文件数据存储方式和修改需求而定

授人以渔,不授人以鱼。
2012-03-26 01:35
菜鸟xx
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-3-24
收藏
得分:0 
要修改用“r+”  读写方式
2012-03-26 10:54
Eilliot
Rank: 6Rank: 6
等 级:侠之大者
帖 子:41
专家分:418
注 册:2012-3-26
收藏
得分:0 
文件内章有丶还是翻着看看吧    记忆会更深刻哟
2012-03-26 11:18
瓦力
Rank: 2
等 级:论坛游民
帖 子:41
专家分:27
注 册:2011-11-18
收藏
得分:0 
回复 4楼 TonyDeng
程序代码:
typedef struct book_ifo{        
    int num;
    char writer[CHAR];
    char name[CHAR];
    double price;
    struct book_ifo *next;
}BOOK;

BOOK *store(BOOK *head)                          //存储
{
    FILE *fp;
    BOOK *ptr, *p;
    p = head;

    if((fp = fopen("bookinfo.txt","w")) == NULL){
        printf("File open error!\n");
        exit(0);
    }
                                                         
    for(ptr = head;ptr;ptr = ptr->next)
    fprintf(fp,"%d   %s   %s %6.2lf\n",ptr->num,ptr->writer,ptr->name,ptr->price);
    if(fclose(fp)){
        printf("Can not close the file!\n");
        exit(0);
    }

    return head;
}
2012-03-26 12:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 7楼 瓦力
你这是把数据以文本的形式写到文件中,每条记录的尺寸是不同的,当要修改的时候,必须对整个文件的数据进行伸缩适应处理(类似在数组中插入或删除不同字节空间的数据),这样的文件模式,是不适应修改需求的,最好把文件覆盖掉从头到尾写一次(从修改部位开始覆盖也行,但本质上与新建文件的代码相同)。这种数据的文件储存,应该用二进制的fwrite()写,而不是文本的fprintf(),相关解释,我以前跟有容乃大说过,很长,我不重复了,但自己也找不到那个帖子。

授人以渔,不授人以鱼。
2012-03-26 13:03
瓦力
Rank: 2
等 级:论坛游民
帖 子:41
专家分:27
注 册:2011-11-18
收藏
得分:0 
回复 8楼 TonyDeng
有没有简单的方法把其中的某个结构中的内容删除呢?谢谢
2012-03-26 21:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
没有。你要记住:文件必定是连续顺序的数据链,不同于内存中的离散链表可以瞬间插入和删除数据,链表的数据结构在文件模式上没有任何优势。

授人以渔,不授人以鱼。
2012-03-26 21:09
快速回复:关于文件的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058201 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved