首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言.dat文件储存有关问题

2013-07-04 
C语言.dat文件储存问题#includestdio.h#includestdlib.hstruct student{char date[11]long moneyint

C语言.dat文件储存问题
#include<stdio.h>
#include<stdlib.h>
struct student
{
    char date[11];
    long money;
    int sta;
    int g_sta;
    int d_sta;
    int help_money;
    char personal[50];
}a[2];
int main()
{
    int i;
    FILE *fp;
    if((fp=fopen("student.dat","rb+"))==NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }
    for(i=0;i<2;i++)
    {
        fread(&a[i],sizeof(struct student),1,fp);
   /*a[i].sta=2; */

        printf("%-11s %ld %4d %4d %4d %4d %s\n",\
        a[i].date,a[i].money,\
        a[i].sta,a[i].g_sta,a[i].d_sta,a[i].help_money,a[i].personal);
    }
    fflush(fp);
    fclose(fp);


    fp = fopen("student.dat", "wb+");
    fwrite(a, sizeof(struct student), 2, fp);
    fclose(fp);
    return 0;
}
就是想同时联系两个文件,让shopping发生时shop.dat文件中的time等于student.dat的time+1;同时student的time也加一. C .dat文件
[解决办法]
数据小的时候就直接驻留在内存中就可以了,等到结束或者定时更新一下文件,你如果要两个文件同步,要么是从头开始遍历,要不你能直接计算数据在文件中的偏移量,如果找的话,找到那个地址读出来以后再回退,然后重新写一下就可以了,目测你这是定长结构体,用fread,feek,和fwrite,fseek(fd, -sizeof(struct ~~),SEEK_CUR),后面的自己琢磨,学长只能帮到你这里了

热点排行