c语言中进行文件的读写操作时
如果我是先用a+即文本的实行打开一个.txt文件进行fread的操作
后面我用wb的即二进制的形式打开这个.txt文件进行fwrite的写入操作
这样做会有什么不妥的地方嘛,(用二进制的形式读写.txt的文件)
可以写代码验证下,你这么做有遇到什么问题没?
看你下面的代码,先打开读取后关闭文件,再打开写入,没什么问题。但是逻辑上是不是你要的效果就看你们作业的要求了。
if((fp=fopen("data.txt","a+"))==NULL)
{
printf("canot open");
return;
}
while(!feof(fp))//记录原来数据里有多少个联系人,从下一位开始存入
{
if(fread(&cp[c],sizeof(struct contacts),1,fp)==1)//读取至数组中
{
c++;}
}
fclose(fp);//关闭文件
if ((fp=fopen("data.txt","wb"))==NULL)//如果打开文件失败
{
printf("can not open file!\n");
return;
}
for(i=0;i<c;i++)
fwrite(&cp[i],sizeof(struct contacts),1,fp);//重新写入磁盘
printf("please input name:");
scanf("%s",cp[c].name);
fclose(fp);
void save(int c)
{
FILE *fp;
fp=fopen("data.txt","a+");
if(fwrite(&cp[c],sizeof(struct contacts),1,fp)!=1)
printf("data error\n");
else
printf("data input successful\n");
fclose(fp);
}
这是其中的一部分
目前其实读写什么的都没有问题,但是给老师检查程序的时候,老师觉得有点“神奇”,所以想知道会有什么不妥的地方嘛