c语言文件的读写问题

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);
}

这是其中的一部分

目前其实读写什么的都没有问题,但是给老师检查程序的时候,老师觉得有点“神奇”,所以想知道会有什么不妥的地方嘛