C编程问题,关于链表

来源:百度知道 编辑:UC知道 时间:2024/06/08 00:06:51
#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct memory)
struct memory
{
char name[10];
char sex[4];

};
void main()
{
int i,j;
struct memory*head,*p;
FILE *fp;
if((fp=fopen("D:\\data.txt","rb"))==NULL)
{printf("cannont open ");
return;
}
for(i=0;i<9;i++)
{ head=p=(struct memory *) malloc(LEN);
fread(&p,sizeof(structmemory),1,fp); /*问题*/
printf("%-10s%-8s\n",&p->name,&p->sex);
printf("------------------------------------------\n");
p=p++;
}

}
为什么把“问题”那行删掉就可以运行,不删掉就不可以?
我市想来个动态创建内存单元,创建一个就把硬盘上得数据放一个进去,循环9次

你这个 貌似不是正规链表吧 链表应该有next的指针的。
还有你的最后一句 p=p++有问题,你句想干什么?如果让p=p+1的话就直接p++就行了 ,我没有你的那个 data.txt 所以没发帮你调试,就直接写在这吧。

#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct memory)
struct memory
{
char name[10];
char sex[4];
struct memory *next;
};
void main()
{
int i,j;
struct memory*head,*p;
FILE *fp;
if((fp=fopen("D:\\data.txt","rb"))==NULL)
{
printf("cannont open ");
return;
}
head=0;
for(i=0;i<9;i++)
{
p=(struct memory *) malloc(LEN);
p->next=head;
head=p;
fread(&p,sizeof(struct memory),1,fp); /*问题*/
}
for(p=head;p;p=p->next)
{
printf("%s %s\n",p->name,p->sex);
}
}

这样才是链表吧。你试试这样应该能访问到了。有bug 的话再找我。 :-)

fread(&p,sizeof(structmemory),1,fp);

为什么用&p? 改成p 试试

#include