| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 428 人关注过本帖
标题:编译,链接没问题,程序运行中出错,哪位大哥看看问题在哪?
只看楼主 加入收藏
hyddpjh
Rank: 2
等 级:论坛游民
帖 子:9
专家分:14
注 册:2014-2-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
编译,链接没问题,程序运行中出错,哪位大哥看看问题在哪?
// 调用函数这个写法,在输入第二个数据的时候,程序运行错了。在main中操作的写法是可以。
# include <stdio.h>
# include <malloc.h>

struct Student
{
    int age;
    float score;
    char name[10];
};

void InputStudent(struct Student ** st, int len)
{
    int i;
    *st = (struct Student *)malloc( len * sizeof(struct Student ) );

    for (i=0; i<len; ++i)
    {
        printf("请输入第%d个学生的信息\n", i+1);
        printf("age = ");
        scanf("%d", &((*st[i]).age));
        printf("score = ");
        scanf(" %f", &((*st[i]).score));
        printf("name = ");
        scanf("%s", &((*st[i]).name));

        getchar();
    }
}

int main(void)
{
    int len;
    int i;
    struct Student * pArr;

    printf("请输入要输入学生信息的个数:\n");
    scanf("%d", &len);
//    pArr = (struct Student *)malloc( len * sizeof(struct Student) );

    //输入学生信息
    InputStudent(&pArr, len);

/*    for (i=0; i<len; i++)
    {
        printf("请输入第%d个学生的信息\n", i+1);
        printf("age =");
        scanf("%d", &pArr[i].age);
        printf("score = ");
        scanf("%f", &pArr[i].score);
        printf("name = ");
        scanf("%s", &pArr[i].name);
    }
*/
    //输出学生信息

    for (i=0; i<len; i++)
    {
        printf("第%d个学生的信息是:\n", i+1);
        printf("age =%d\n",pArr[i].age);        
        printf("score = %f\n",pArr[i].score);        
        printf("name = %s\n", pArr[i].name);
    }

    return 0;
}

[ 本帖最后由 hyddpjh 于 2014-2-27 11:16 编辑 ]
搜索更多相关主题的帖子: include 大哥 信息 
2014-02-27 10:54
hyddpjh
Rank: 2
等 级:论坛游民
帖 子:9
专家分:14
注 册:2014-2-27
收藏
得分:0 
用指针使结构体在函数中传递要怎么弄呢?我这种写法错在哪了,哪位大哥给我指点下?
2014-02-27 21:08
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
程序代码:
# include <stdio.h>
# include <malloc.h>

struct Student
{
    int age;
    float score;
    char name[10];
};

void InputStudent(struct Student * st[], int len)
{
    int i;
    for (i=0; i<len; ++i)
    {
        printf("请输入第%d个学生的信息\n", i+1);
        printf("age = ");
        scanf("%d", &st[i]->age);
        printf("score = ");
        scanf(" %f", &st[i]->score);
        printf("name = ");
        scanf("%s", st[i]->name);
        getchar();
    }
}

int main(void)
{
    int len;
    int i;
    struct Student * pArr[256];
    printf("请输入要输入学生信息的个数(最多输入256个):\n");
    scanf("%d", &len);
    //输入学生信息
    for(i=0;i<256;i++) pArr[i] = (struct Student *)malloc( sizeof(struct Student ) );
    InputStudent(pArr, len);
    //输出学生信息
    for (i=0; i<len; i++)
    {
        printf("第%d个学生的信息是:\n", i+1);
        printf("age =%d\n",pArr[i]->age);       
        printf("score = %f\n",pArr[i]->score);       
        printf("name = %s\n", pArr[i]->name);
    }
    for(i=0;i<256;i++) free( pArr[i]);
    return 0;
}


试试这个看是不是你想要的

DO IT YOURSELF !
2014-02-27 21:26
朱鹏程
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2014-2-13
收藏
得分:10 
指针传递过程中出错了    InputStudent(&pArr, len);  pArr存的是学生内容的地址  &pArr   是储存 pArr自己本身的地址   假设[2][0][0][0] 是学生内容的地址  那么[2][2][2][2]是pArr自己本身的地址  在 这个地址里面 放的内容的 [2][0][0][0][0] 学生的信息
2014-03-02 13:57
hyddpjh
Rank: 2
等 级:论坛游民
帖 子:9
专家分:14
注 册:2014-2-27
收藏
得分:0 
//一直很苦恼,搞不定,就继续往下学了,学了链表以后,忽然开朗,修改了程序,终于搞明白了,运行正常。想明白了又感觉挺简单,呵呵。谢谢各位的解答提醒,谢谢了。
//修改程序如下:
# include <stdio.h>
# include <malloc.h>

struct Student
{
    int age;
    float score;
    char name[10];
};

struct Student *  InputStudent(void)
{
    int i, len;
    struct Student * pArr;
   
    printf("请输入要输入学生信息的个数:\n");
    scanf("%d", &len);
    pArr = (struct Student *)malloc( len * sizeof(struct Student ) );
   
    for (i=0; i<len; ++i)
    {
        printf("请输入第%d个学生的信息\n", i+1);
        printf("age = ");
        scanf("%d", &pArr[i].age);
        printf("score = ");
        scanf(" %f", &pArr[i].score);
        printf("name = ");
        scanf("%s", &pArr[i].name);
        
        //    pArr ++;
        //    getchar();
    }
   
    return (pArr);
}

int OutputStudent(struct Student * pArr )
{
    int len, i;
    struct Student * p;
   
    p = pArr;
   
    printf("请输入要输出学生信息的个数\n");
    scanf ("%d", &len);
   
    for(i=0; i<len; i++)
    {
        printf("第%d个学生信息为:\n", i+1);
        printf("age =%d\n", p[i].age);
        
        printf("score =%f\n", p[i].score);
        
        printf("name = %s\n", p[i].name);
        
    }
   
    return 0;
}

int main(void)
{
    struct Student * pArr;
   
    pArr = InputStudent( );
    OutputStudent(pArr );
   
    return 0;
}
2014-03-03 11:01
快速回复:编译,链接没问题,程序运行中出错,哪位大哥看看问题在哪?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017386 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved