【求助】以下一段程序错误在哪里?
#include<iostream>using namespace std;
struct lstr
{
char data;
lstr *next;
};
void lstrassign(lstr *s,char cstr[])
{
int i;
lstr *r,*p;
s=(lstr*)malloc(sizeof(lstr));
s->next=NULL;
r=s;
for(i=0;cstr[i]!='\0';i++)
{
p=(lstr *)malloc(sizeof(lstr));
p->data=cstr[i];
p->next=NULL;
r->next=p;
r=p;
}
}
void displstr(lstr *s)
{
lstr *p=s->next;
if(p==NULL)
cout<<"null string!"<<endl;
else
while(p!=NULL)
{
cout<<p->data<<endl;
p=p->next;
}
}
void main()
{
int i;
lstr s,*p;
p=&s;
char str[15];
gets(str);
lstrassign(p,str);
i=lstrlength(p);
cout<<"i="<<i<<endl;
}