#define SIZE_USER 50
typedef struct User
{
char name[20];
char num[20];
char pw[20];
}User;
int Save_users(User *U)
{
int i;
FILE *fp;
if((fp=fopen("users","w"))==NULL) //以写的形式打开文件
{
printf("\t\t\t\t无法打开文件!!\n");
exit(0);
}
for(i=0;i<SIZE_USER;i++)
{
if(fwrite(&U[i],sizeof(struct User),1,fp)!=1);//向文件写入
printf("\t\t\t-_-error!");
}
fclose(fp);
return 0;
}
已经改为myusers.dat,然后打开方式改成了wb,还是不行
不行,直接报错
追答嘿嘿,好久没做写文件操作了,应该是&U[i],U[i]不对。
问题出在
for(i=0;i<SIZE_USER;i++)
{
if(fwrite(&U[i],sizeof(struct User),1,fp)!=1);//向文件写入
printf("\t\t\t-_-error!");
}
这句上,if判断后面多了结束符号 ;,所以printf是独立语句,无论无何都会执行的。