文件随机读写的问题
这个问题是谭浩强老师的<C程序设计>第四版中的 例 10.6;题目是: 在磁盘文件上存有10个学生的数据,要求将第1, 3, 5, 7, 9个学生的数据输入计算机,并在屏幕上显示出来.
代码如下:
程序代码:#include <stdio.h>
#include <stdlib.h>
struct student_type{
char name[10];
int num;
int age;
char addr[10];
}stud[10];
int main(void)
{
int i, n;
FILE *fp;
if((fp = fopen("stu.dat", "rb")) == NULL){ //有建立此文件,文件内容也没问题,是按书上例题建的,有读文件显示过.
printf("cannot open file\n");
exit(0);
}
for(i = 0; i < 10; i+=2){ //讀第1, 3, 5, 7,9個學生的數據
fseek(fp, i*sizeof(struct student_type), 0); // 移动文件位置标记
fread(&stud[i], sizeof(struct student_type), 1, fp); //读一个数据块到结构体变量.
printf("%-10s %4d %4d %-15s\n", stud[i].name, stud[i].num, stud[i].age, stud[i].addr); //在屏幕显示
}
fclose(fp);
return 0;
}以上是书上的原码,(我没对出错误,就当是原码吧.)编译 0 错误, 0 警告.
运行结果只有第一个数据是对的,后面的都乱七八糟, 我菜鸟一枚,肯求前辈指教,不胜感激!







