逆风飞翔 发表于 2013-10-7 22:28:17

大神过来看看我这个程序错哪了



不知道为什么呀?求大神!

tsembrace 发表于 2013-10-7 22:28:18

一种方法是把scanf提到主程序里,在输入学生数之后再malloc
但这种方法跟你的思路可能不大相符
另外一种就是在inputstu()里scanf、malloc;void inputstu(struct student **s,int *len){
        int i;
        printf("请输入学生数:\n");
        scanf("%d",len);
        *s=(struct student*)malloc(*len*sizeof(struct student));
        for(i=0;i<*len;i++){
                printf("请输入第%d个学生名字:\n",i+1);
                scanf("%s",(*s).name);
                printf("请输入第%d个学生年纪:\n",i+1);
                scanf("%d",&(*s).age);
        }
}

565123 发表于 2013-10-7 22:58:31

main 的len没有初始化,是不确定的,应该把malloc放进inputstu内void inputstu(student* stu, int* len)
{
        int i;
        printf("学生数??");
        scanf("%d", len);
        student* stu = (student*) malloc(*len * sizeof(student));
        for (i = 0; i < *len; i++)
        {
                ...
                ...
                ...
        }
}

逆风飞翔 发表于 2013-10-8 07:00:13

565123 发表于 2013-10-7 22:58 static/image/common/back.gif
main 的len没有初始化,是不确定的,应该把malloc放进inputstu内

可是我定义了len,那它不就有对应的内存地址了吗,再把地址发给inputstu,利用指针来初始化,我感觉这逻辑没什么 问题,我这么想错在哪里呀,大神!

tsembrace 发表于 2013-10-8 11:10:56

逆风飞翔 发表于 2013-10-8 07:00 static/image/common/back.gif
可是我定义了len,那它不就有对应的内存地址了吗,再把地址发给inputstu,利用指针来初始化,我感觉这逻辑 ...

你主程序第一句定义len,但没有赋值,第二句malloc怎么知道给你多大空间?
但你把malloc放进inputstu函数的话,参数应该得改变一下吧。

逆风飞翔 发表于 2013-10-8 11:58:10

tsembrace 发表于 2013-10-7 22:28 static/image/common/back.gif
一种方法是把scanf提到主程序里,在输入学生数之后再malloc
但这种方法跟你的思路可能不大相符
另外一种就 ...

谢谢你。。。。

夏七夕 发表于 2013-10-8 16:24:07

我也常出现这样的错误耶{:1_1:}{:1_1:}{:1_1:}

逆风飞翔 发表于 2013-10-8 16:44:46

夏七夕 发表于 2013-10-8 16:24 static/image/common/back.gif
我也常出现这样的错误耶

呵呵,:handshake:victory:

devotedtoc 发表于 2013-10-8 17:58:21

既然来了,还是顶一下再走吧

happyin3 发表于 2013-10-9 13:06:47

学习了。。。。。。

小小鸟儿 发表于 2013-10-9 13:25:16

顶一下吧!

lizzyhu 发表于 2013-10-9 16:57:18

额,确实,我以前老是犯这样的错误
页: [1]
查看完整版本: 大神过来看看我这个程序错哪了