| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 674 人关注过本帖
标题:请高手进来帮忙看下这程序
取消只看楼主 加入收藏
yaozheng
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-5-3
收藏
 问题点数:0 回复次数:1 
请高手进来帮忙看下这程序
想用链表做个通讯录,链表储存好象已经没问题了,但是如何从文件里调出链表出了问题,子程序不写了,不影响阅读.
程序中间片段调试正常,关键问题是将链表储存到文件和从文件里读出链表
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include"E:\我的个人文件\编程\个人练习\结构体\建立链表 函数\建立链表 函数.h"
#include"E:\我的个人文件\编程\个人练习\结构体\输出链表 函数\输出链表 函数.h"
#include"E:\我的个人文件\编程\个人练习\结构体\插入链表 函数\插入链表 函数.h"
#include"E:\我的个人文件\编程\个人练习\结构体\删除链表 函数\删除链表 函数.h"
#define LENTH sizeof(struct student)
#define NUL 0


extern struct student *found(); //声明“建立链表”函数
extern struct student *add(struct student *head); //声明“插入链表”函数
extern struct student *del(struct student *head); //声明“删除链表”函数
extern void print(struct student *head); //声明“输出链表”函数

int main()
{
int m=0,i=0,n=0;
FILE *fp1;
char ch;
struct student *head,*p1,*p2,*p3;
char choose;
p3=(struct student *)malloc(LENTH);
printf("是否读入文件:");
scanf("%c",&ch);
if(ch=='Y')
{
if((fp1=fopen("student_list","rb"))==NUL)
printf("read error!");
fread(p3,4,1,fp1);
head=p3;
fclose(fp1);
}
else
{
head=found();
}
do
{
printf("请输入你要进行的操作A.输出B.插入C.删除D.退出:");
fflush(stdin);
scanf("%c",&choose);
if(choose=='A')
print(head);
else if(choose=='B')
head=add(head);
else if(choose=='C')
head=del(head);
}
while(choose!='D');
p1=p2=head;
while(p1!=NUL)
{
p1=p2->next;
p2=p1;
m++;
}
p1=p2=head;
fp1=fopen("student_list","wb");
while(p2!=NUL)
{
p1=p2->next;
n++;
if(fwrite(p2,LENTH,1,fp1)!=1)
printf("file write error\n");
if(n==1)
p3=p2;
p2=p1;
}
fclose(fp1);
getch();
return 0;
}

其中结构体定义在子程序里,为:
struct student
{
long num;
char name[10];
char sex[6];
char phone[12];
struct student *next;
};

我用的是动态链表啊,调用和储存文件时用指针做啊,不要教我定义结构体数组那种方法,那样浪费内存,别又是无语啊,文件操作我真的不明白,书上说的太简单了,例题只给方法不给原理,换了题型后就不知道该怎么操作了
每次读入文件时只有一个数据是对的,就是链表的第一个节点处的num是对的,其余的全是乱码
以下图片是我存入链表后运行读出的结果,该链表储存有3个节点
图片附件: 游客没有浏览图片的权限,请 登录注册

补充一下,我用的是VC++6.0编译工具!!

[[it] 本帖最后由 yaozheng 于 2008-5-3 19:58 编辑 [/it]]
搜索更多相关主题的帖子: include 通讯录 结构体 子程序 如何 
2008-05-03 18:24
yaozheng
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-5-3
收藏
得分:0 
谢谢楼上两位回答,头文件没有问题,因为我在做这个程序的时候,首先是不具备读写和储存的功能的,我试过没问题,而且头文件里的包含的子程序跟文件储存和读写没任何关系,那只是我写的处理链表的函数,
问题的关键是在读写那个地方
2008-05-03 19:56
快速回复:请高手进来帮忙看下这程序
数据加载中...
 
   



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

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