请C语言高人指点

请C语言高人指点
#include<conio.h>
#include<dos.h>
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include <malloc.h>

typedef struct sturecord /* 库结构*/
{
char rq[20];
char bz[20];
struct sturecord*nextlink;
struct sturecord*lastlink;
}stu;

void addRecord() /*增加记录*/
{
stu*pstu;
char date[80]="200803023";
char beizhu[80]="heking";
pstu=(stu*)malloc(sizeof(stu));
if(pstu==NULL)
{
printf("Fail!please press any key to return...");
return;
}
strcpy(pstu->rq,date);
strcpy(pstu->bz,beizhu);
}

main()
{
stu*v;
addRecord();
printf("%s",v->rq);
printf("%s",v->bz);
getch();
}
为什么总是乱码?请高人回答,本人不胜感激!

stu*v; 定义了指针V,未分配空间, 也没有将此指针传入函数addRecord()中啊,一直是个野指针,当然是乱码.

stu *addRecord() /*增加记录*/
{
char date[80]="200803023";
char beizhu[80]="heking";
stu *pstu;
pstu = (stu *)malloc(sizeof(stu));
if(pstu==NULL)
{
printf("Fail!please press any key to return...");
return NULL;
}
strcpy(pstu->rq,date);
strcpy(pstu->bz,beizhu);
return pstu;
}

main()
{

stu *v = NULL;
v = addRecord();
printf("%s\n",v->rq);
printf("%s\n",v->bz);
free(v);

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-05-29
stu*pstu;
char date[80]="200803023";
char beizhu[80]="heking";
pstu=(stu*)malloc(sizeof(stu));
if(pstu==NULL)
第2个回答  2008-05-29
addRecord()里面操作的指针和main()里面的指针不是同一个.
所以,addRecord需要参数传入.
或者说把 v定义成全局变量
第3个回答  2008-05-29
楼主的代码存在两个问题:
1、将函数addRecord
修改为
stu *addRecord() /*增加记录*/
{
stu*pstu;
char date[80]="200803023";
char beizhu[80]="heking";
pstu=(stu*)malloc(sizeof(stu));
if(pstu==NULL)
{
printf("Fail!please press any key to return...");
}
else
{
strcpy(pstu->rq,date);
strcpy(pstu->bz,beizhu);
}
return pstu;
}
2、将函数main()中代码
addRecord();
printf("%s",v->rq);
printf("%s",v->bz);
修改为
v = addRecord();
if (v != NULL)
{
printf("%s",v->rq);
printf("%s",v->bz);
free(v);
}
相似回答