救命啊!!!C语言高手帮帮忙!!

来源:百度知道 编辑:UC知道 时间:2024/06/23 08:31:57
typedef struct HeadNode /*头结点声明*/
{
int total;
struct Node *next;
};
typedef struct Node{ /*记录节点声明*/
char name[20];
char telephone[20];
struct Node *next;
};

struct HeadNode* GetRecords(char *fname)
{
struct Node *p0,*p1;
struct HeadNode *head;
int i=1;
FILE *fp_out;
if((fp_out=fopen(fname,"rb"))==NULL)
{
printf("cannot open file\n");
return;
}
while(!feof(fp_out))
{

if(i==1) /*把读出的信息重新连接程链表*/
{
head=(struct HeadNode*)malloc(sizeof(struct HeadNode));
fread(head,sizeof(struct HeadNode),1,fp_out);
i++;
}
else if(i==2)
{
p0=(struct Node*)malloc(sizeof(struct Nod

读取,我没有看出什么问题,关键看文件的格式了,是不是跟这段读取的程序对的上。

另外,输出的时候多输出没有什么实际内容的结点,也许是输出的程序有问题吧

补充:
我还是没有看出有什么问题。
建议楼主学着,单步跟踪一下,肯定能找到问题所在的。

看了半天,也不知道你的问题到底是什么,程序好像应该没问题,你给的补充说有4Records,但怎么还有5,6,7呢

我觉得你的问题是:
你读取的时候是按照结点的大小来读取的,但你得保证你的文件中每个记录的大小和结构体一样啊,换句话说,你文件中的记录的大小应该等于:名字和电话号码应该都是20字符,再加上指针的大小,不够要拿空格填上的才对。否则不就错位了?