文件随机读写的问题
这个问题是谭浩强老师的<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 警告.
运行结果只有第一个数据是对的,后面的都乱七八糟, 我菜鸟一枚,肯求前辈指教,不胜感激!