| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 636 人关注过本帖
标题:【求助】 C语言中修改文件中的一条信息
只看楼主 加入收藏
ljp200901284
该用户已被删除
收藏
 问题点数:0 回复次数:5 
【求助】 C语言中修改文件中的一条信息
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: C语言 文件 
2010-07-21 08:21
ggyy4k
Rank: 5Rank: 5
等 级:职业侠客
帖 子:111
专家分:334
注 册:2010-6-28
收藏
得分:0 
问题有点模糊,你保存价格信息的文件什么格式?采用的什么数据结构,是结构体还是链表?搞清楚了数据结构,操作就很简单了
2010-07-21 14:49
ljp200901284
该用户已被删除
收藏
得分:0 
回复 3楼 ggyy4k
提示: 作者被禁止或删除 内容自动屏蔽
2010-07-21 16:59
jinchats
Rank: 1
来 自:安徽
等 级:新手上路
帖 子:16
专家分:7
注 册:2010-6-5
收藏
得分:0 
使用fseek(FILE *stream, long offset, int whence);函数重新定位文件指针。
参考例例题:

程序代码:
#include<stdio.h>
#include<stdlib.h>

#define N 5

typedef struct
{
    int year;
    int mon;
    int day;
}time;

typedef struct
{   
    int num;
    char title[32];
    char author[8];
    char press[32];
    float price;
    time t;
}book;

void save(book *b)
{
    int i;
    FILE *fp;

    if((fp=fopen("books.dat","wb"))==NULL)
    {
        printf("open books.dat failed!!\n");
        exit(0);
    }

    for(i=0; i<N; i++)
    {
        if(fwrite(&b[i],sizeof(book),1,fp)!=1)
            printf("save books[%d] info error!!\n");
           
    }    

    fclose(fp);
}

void change(int n, float price )
{
    FILE *fp;
    book b;    

    if((fp=fopen("books.dat","rb+"))==NULL)
    {
        printf("open books.dat failed!!\n");
        exit(0);
    }
   
    fseek(fp,n*sizeof(book),0);
    fread(&b,sizeof(book),1,fp);
   
    b.price = price;
   
    fseek(fp,n*sizeof(book),0);
    fwrite(&b,sizeof(book),1,fp);
   
    fclose(fp);
}

void display()
{
    FILE *fp;
    int i;
    book b;
   
    if((fp=fopen("books.dat","r"))==NULL)
    {
        printf("open books.dat failed!!\n");
        exit(0);
    }

    for(i=0 ; i<N; i++)
    {
        fread(&b,sizeof(book),1,fp);
        printf("%d\t%s\t%s\t%s\t%f\t%d\t%d\t%d\n",b.num,b.title,\
        b.author,b.press,b.price,b.t.year,b.t.mon,b.t.day);
       
    }
   
    fclose(fp);
}


int main()
{
    book books[N];
    int i;
    int n;
    float price;

    for(i=0; i<N; i++)
    {
        printf("input the %ds book info:\n",i);
           printf("num\ttiltle\tauthor\tpress\tprice\tyear\tmon\tday\n");
        scanf("%d %s %s %s %f %d %d %d",&books[i].num,\
            &books[i].title,&books[i].author,&books[i].press,\
            &books[i].price,&books[i].t.year,\
            &books[i].t.mon,&books[i].t.day);
    }
   
    save(books);
    printf("the books info is:\n");
    display();
   
   
    printf("input which book you want to change:");
    scanf("%d",&n);
    printf("input a new pricef:");
    scanf("%f",&price);

    change(n-1,price);   
   
    printf("after change the books info:\n");
    display();

    return 0;
}
   

2010-07-22 20:54
ljp200901284
该用户已被删除
收藏
得分:0 
回复 4楼 jinchats
提示: 作者被禁止或删除 内容自动屏蔽
2010-07-23 22:50
快速回复:【求助】 C语言中修改文件中的一条信息
数据加载中...
 
   



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

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