标题:文件随机读写的问题
只看楼主
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
结帖率:100%
已结贴  问题点数:20 回复次数:2 
文件随机读写的问题
这个问题是谭浩强老师的<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 警告.
运行结果只有第一个数据是对的,后面的都乱七八糟, 我菜鸟一枚,肯求前辈指教,不胜感激!


搜索更多相关主题的帖子: C程序设计 计算机 
2013-07-29 10:27
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
得分:20 
一般都是stu.dat的内容和结构问题
2013-07-29 11:19
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
得分:0 
回复 2楼 jk_love
我把两个程序代码合并到一起,运行就没有问题了,看来是文件有问题.
2013-07-29 15:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-418132-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.175459 second(s), 10 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved