文件 C语言

来源:百度知道 编辑:UC知道 时间:2024/06/20 05:51:01
c语言文件打开模式应该怎样用?
我想达到的效果:1.没有data文件时创建,有这个同名文件时可以对它追加数据保存.
代码:(函数)
void save(int te,int cl) //对保存函数进行定义
{
struct score s[2][3][20];
FILE *fp;
if((fopen("data","ab"))==NULL)
{
printf("不能打开数据库\n");//请问这行应该怎么改?
return;
}
for(int i=0;i<20;i++)
fwrite(&s[te][cl][i],sizeof(struct score),1,fp);
fclose(fp);
}
2.可读取并修改.
void read() //对读取函数进行定义
{
struct score s[2][3][20];
FILE *fp;
int i,j,k;
fp=fopen("data","rb");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
for(k=0;k<20;k++)
fread(&s[i][j][k],sizeof(struct score),1,fp);
fclose(fp);
} //请问是否正确?

注:turb C环境,由于全部代码很长,我只取了其中的一部分.我对C语言中的文件操作还有些不太懂,所以求助于大家.
我想达到的目的:能按需?
我在fopen时如果有同名文件,在进行修改一些数据时不会把原来的数据删除掉吧?
我的目的是能按要求完成对data数据的录入、修改...(比如我打开一个TXT文件,改一些数据后保存;而不是删除原来的数据,只保存改后的数据)
所以我在打开时应该选择"r+"

if((fopen("data","ab"))==NULL)
这句话是什么意思?
打开模式有w,r,b,w+,r+,b+,其中w是写,r是读,b是按2进制打开。你在fopen的时候本身就会创建不存在的文件。想追加就先把文件指针放到文件最后再用fwrite。移动文件指针用fseek,具体的看下msdn吧,很简单的

这些问题你可以自己写个小程序试验一下,结果就很明白了。
你改动文件里的数据是只有被改动的位置会改变,其他的位置你没改的话是不会变的,文件处理时是没有保存这个命令的,所以只要你往文件某处进行写操作,数据就立即被改变了,不需要保存,也不可能取消前面的写操作,你自己实践一下就非常清楚了