读书人

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

发布时间: 2013-07-04 11:45:44 作者: rapoo

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),后面的自己琢磨,学长只能帮到你这里了

读书人网 >C语言

热点推荐