帮偶解决一个malloc函数的问题

dousp 2003-08-20 10:31:25
#include "stdio.h"
#include "alloc.h"

struct s
{
long i;
long f;
};

main()
{
struct s *p1;
p1 = (struct s*)malloc(sizeof(struct s));

printf("input num:\n");
scanf("%d,%d",&p1->i,&p1->f);
printf("%d,%d\n",p1->i,p1->f);
getchar();
}

运行上面的例子,结果是:
input num:
10,20
10,3034

可是偶的本意是:
input num:
10,20
10,20

不知错在哪里?
...全文
112 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack_wq 2003-08-20
  • 打赏
  • 举报
回复
注意释放申请的内存资源!
ShLikeWater 2003-08-20
  • 打赏
  • 举报
回复
不知道你在什么环境下运行的,我运行的就好好的,没有任何错误啊。
ehhl 2003-08-20
  • 打赏
  • 举报
回复
不是把,我在VC6的环境下运行,没有问题啊,确实也没有问题!
ransion 2003-08-20
  • 打赏
  • 举报
回复
我可以运行啊(dev-c++)
不过楼主申请的内存都不释放
dousp 2003-08-20
  • 打赏
  • 举报
回复
一个链表的例子
#define NULL 0
#define TYPE struct stu
#define LEN sizeof(struct stu)

struct stu
{
int num;
float age;
struct stu *next;
};

TYPE * creat(int n)
{
struct stu *head,*pf,*pb;
int i;

for(i=0;i<n;i++)
{
pb=(TYPE *)malloc(LEN);
printf("input Number and Age\n");
scanf("%d%f",&pb->num,&pb->age);
if(i==0)
pf=head=pb;
else pf->next=pb;

pb->next=NULL;
pf=pb;
}
return(head);
}


void print(TYPE * head)
{
printf("Number\t\tAge\n");
while(head!=NULL)
{
printf("%d\t\t%5.1f\n",head->num,head->age);
head=head->next;
}
}

main()
{
TYPE * head,*pnum;
int n,num;
printf("input number of node: ");
scanf("%d",&n);
head=creat(n);
print(head);
}
现在不能正常运行,提示scanf函数的float格式错误,可是我检查没有错误阿,如果把结构中的age成员改为别的类型就可运行,为什么?
shishiXP 2003-08-20
  • 打赏
  • 举报
回复

scanf("%d%d",&p1->i,&p1->f); //!!

你多了个逗号:)

加分!!!!!
dousp 2003-08-20
  • 打赏
  • 举报
回复
?
dousp 2003-08-20
  • 打赏
  • 举报
回复
谁的机器上用的是tc2.0的环境,帮忙运行一下那个链表的例子,看看是什么结果。谢谢!
dousp 2003-08-20
  • 打赏
  • 举报
回复
继续-〉?
dousp 2003-08-20
  • 打赏
  • 举报
回复
我在TC2.0下运行怎么不行呢?
谢谢提醒,我这是照搬的个例子,所以没改正没有释放内存的地方。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧