C 二进制读写数据
#include"stdafx.h"#include<stdlib.h>#include<string.h>#defineSIZE3structstudent_type{...
#include "stdafx.h"
#include <stdlib.h>
#include<string.h>
#define SIZE 3
struct student_type
{
char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
int _tmain(int argc, _TCHAR* argv[])
{
void save();
int i;
printf("Please enter date of students:\n");
for(i=0;i<SIZE;i++)
{
scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
}
save();
system("pause");
return 0;
}
void save()
{
FILE *fp;
int i;
if((fp=fopen("stu.dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
{
printf("file write error\n");
}
fclose(fp);
}
}
看了好几遍了, 那里错了?
我输出 zhang 1001 19 room_101
Sun 1002 20 room_102
……
第一条输入的数据和数据文件里面的就不一样, 剩下的直接出错file write error 展开
#include <stdlib.h>
#include<string.h>
#define SIZE 3
struct student_type
{
char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
int _tmain(int argc, _TCHAR* argv[])
{
void save();
int i;
printf("Please enter date of students:\n");
for(i=0;i<SIZE;i++)
{
scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
}
save();
system("pause");
return 0;
}
void save()
{
FILE *fp;
int i;
if((fp=fopen("stu.dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
{
printf("file write error\n");
}
fclose(fp);
}
}
看了好几遍了, 那里错了?
我输出 zhang 1001 19 room_101
Sun 1002 20 room_102
……
第一条输入的数据和数据文件里面的就不一样, 剩下的直接出错file write error 展开
1个回答
展开全部
for(i=0;i<SIZE;i++)
{
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
{
printf("file write error\n");
}
fclose(fp);//放错位置了
}
修改为:
for(i=0;i<SIZE;i++)
{
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
{
printf("file write error\n");
}
}
fclose(fp);//应该放在for循环外面
{
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
{
printf("file write error\n");
}
fclose(fp);//放错位置了
}
修改为:
for(i=0;i<SIZE;i++)
{
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
{
printf("file write error\n");
}
}
fclose(fp);//应该放在for循环外面
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询