请教一下高手们,帮我诊断一下这个程序

renbin5566 2010-04-23 03:18:26
# include <stdio.h>
# define SIZE 2
struct student_type{
char name[15];
int num;
int age;
char addr[15];
}stu[SIZE];
void main()
{
int i;
FILE*fp;
fp=fopen("stu_list","rb");
for(i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student_type),1,fp);
printf("%-10s%4d%4d%-15s\n",stu[i].name,stu[i].num,stu[i].age,stu[i].addr);
}
fclose(fp);
}
...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sixbird 2010-04-24
  • 打赏
  • 举报
回复
怎么确保读取的格式正确呢
ForestDB 2010-04-24
  • 打赏
  • 举报
回复
帮顶。
huanmie_09 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 renbin5566 的回复:]
那个文件存在,可是不能读取
[/Quote]
读取失败吧。读取的类型要跟结构体类型(二进制形式)保持一致.
即fread的数据是fwrite的数据.
renbin5566 2010-04-23
  • 打赏
  • 举报
回复
那个文件存在,可是不能读取
liru125504 2010-04-23
  • 打赏
  • 举报
回复
同意4楼
northwesternwind 2010-04-23
  • 打赏
  • 举报
回复
不知道到底发生什么错误?从代码看3个问题:

1. main函数返回应该是int
2. sizeof(struct student_type) 是40而不是38, 数据文件格式需要对应。
3. fopen, fwrite, fread等i/o操作函数应该判断是否成功。

zuiyuezhou888 2010-04-23
  • 打赏
  • 举报
回复
从给的程序来看是没有问题 应该是楼主的stu_list文件中存储的数据有问题
huanmie_09 2010-04-23
  • 打赏
  • 举报
回复
程序没什么问题,stu_list文件不存在吧.先写文件,然后读.

#include <stdio.h>
#include <string.h>

#define SIZE 2

struct student_type{
char name[15];
int num;
int age;
char addr[15];
} stu[SIZE];

void main()
{
int i;
FILE *fp;
fp = fopen("stu_list","wb+");

strcpy(stu[0].name, "huanmie");
stu[0].num = 1;
stu[0].age = 100;
strcpy(stu[0].addr, "huoxing");

strcpy(stu[1].name, "huanmie09");
stu[1].num = 1;
stu[1].age = 100;
strcpy(stu[1].addr, "huoxing09");

for(i=0;i<SIZE;i++)
{
printf("%-10s%4d%4d%-15s\n",stu[i].name,stu[i].num,stu[i].age,stu[i].addr);
}
printf("写入文件..\n");
for(i=0;i<SIZE;i++)
{
fwrite(&stu[i],sizeof(struct student_type),1,fp);
}
printf("写入文件成功!\n");
rewind(fp);
printf("读文件..\n");
for(i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student_type),1,fp);
printf("%-10s%4d%4d%-15s\n",stu[i].name,stu[i].num,stu[i].age,stu[i].addr);
}

fclose(fp);
}
huanmie_09 2010-04-23
  • 打赏
  • 举报
回复
程序没什么问题,stu_list文件不存在吧.先写文件,然后读.

#include <stdio.h>
#include <string.h>

#define SIZE 2

struct student_type{
char name[15];
int num;
int age;
char addr[15];
} stu[SIZE];

void main()
{
int i;
FILE *fp;
fp = fopen("stu_list","wb+");

strcpy(stu[0].name, "huanmie");
stu[0].num = 1;
stu[0].age = 100;
strcpy(stu[0].addr, "huoxing");

strcpy(stu[1].name, "huanmie09");
stu[1].num = 1;
stu[1].age = 100;
strcpy(stu[1].addr, "huoxing09");

for(i=0;i<SIZE;i++)
{
printf("%-10s%4d%4d%-15s\n",stu[i].name,stu[i].num,stu[i].age,stu[i].addr);
}
printf("写入文件..\n");
for(i=0;i<SIZE;i++)
{
fwrite(&stu[i],sizeof(struct student_type),1,fp);
}
printf("写入文件成功!\n");
rewind(fp);
printf("读文件..\n");
for(i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student_type),1,fp);
printf("%-10s%4d%4d%-15s\n",stu[i].name,stu[i].num,stu[i].age,stu[i].addr);
}

fclose(fp);
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧