标题:大神们,看下这个程序为什么会报错
只看楼主
kal
Rank: 2
等 级:论坛游民
帖 子:12
专家分:11
注 册:2014-10-3
结帖率:0
已结贴  问题点数:20 回复次数:4 
大神们,看下这个程序为什么会报错
#include <stdio.h>
#include <malloc.h>

struct Student        //   定义一个学生结构体
{
    char    name[100];
    int     age;
    float   score;
};

void Scan(struct Student ** p, int q)    //从外部获取学生信息
{
    int i;
    for (i=0; i<q; i++)
    {
        printf ("please input name\n");
        scanf ("%s",  **p[i].name);
        printf ("please input age\n");
        scanf ("%d", *p[i].age);
        printf ("please input score\n");
        scanf ("%f", *p[i].score);
    }
}
void Print(struct Student ** p, int q)        //输出学生信息
{
    int i;
    for (i=0; i<q; i++)
    {
        printf("NO.%d %-10s %-2d %-5f\n", i+1 ,**p[i].name, **p[i].age, **p[i].score);
    }
}

  
int main (void)
{
    int len;
    printf("please input number of student\n");
    scanf ("%d", &len);
    struct Student * parr;
    parr = (struct Student *) malloc (len * sizeof(struct Student));
    Scan(&parr,len);
    Print(&parr,len);
}
搜索更多相关主题的帖子: include please 结构体 信息 
2014-10-06 10:50
kal
Rank: 2
等 级:论坛游民
帖 子:12
专家分:11
注 册:2014-10-3
得分:0 

//按下面这样就没错,我觉得是指针那里出了问题,但是自己找不出来,求大神指导
#include <stdio.h>
#include <malloc.h>

struct Student
{
    char    name[100];
    int     age;
    float   score;
};
  
int main (void)
{
    int len;
    printf("please input number of student\n");
    scanf ("%d", &len);
    struct Student * parr;
    parr = (struct Student *) malloc (len * sizeof(struct Student));
int i,j;
    for (i=0;i<len;i++)
    {
        printf ("name=");
        scanf ("%s",parr[i].name);
        printf ("\nage=");
        scanf ("%d",&parr[i].age);
        printf ("\nscore=");
        scanf ("%f",&parr[i].score);

    }
    for (j=0;j<len;j++)
    {
        printf ("NO.%-2d %-10s %-2d %-5f\n",j+1,parr[j].name,parr[j].age,parr[j].score);
    }
}
2014-10-06 10:56
三个人
Rank: 2
等 级:论坛游民
帖 子:54
专家分:40
注 册:2014-7-6
得分:20 
void Scan(struct Student ** p, int q)    //从外部获取学生信息
void Print(struct Student ** p, int q)        //输出学生信息
为什么要用二级指针啊
2014-10-06 11:21
kal
Rank: 2
等 级:论坛游民
帖 子:12
专家分:11
注 册:2014-10-3
得分:0 
//已经解决。。。
#include <stdio.h>
#include <malloc.h>

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

void Scan(struct Student ** p, int q)
{
    int i;
    for (i=0; i<q; i++)
    {
        printf ("please input name\n");
        scanf ("%s",  (*p)[i].name);
        printf ("please input age\n");
        scanf ("%d", &(*p)[i].age);
        printf ("please input score\n");
        scanf ("%f", &(*p)[i].score);
    }
}
void Print(struct Student ** p, int q)
{
    int i;
    for (i=0; i<q; i++)
    {
        printf("NO.%d %-10s %-2d %-5f\n", i+1 ,(*p)[i].name, (*p)[i].age, (*p)[i].score);
    }
}

  
int main (void)
{
    int len;
    printf("please input number of student\n");
    scanf ("%d", &len);
    struct Student * parr;
    parr = (struct Student *) malloc (len * sizeof(struct Student));
    Scan(&parr,len);
    Print(&parr,len);
   
}
2014-10-06 12:22
kal
Rank: 2
等 级:论坛游民
帖 子:12
专家分:11
注 册:2014-10-3
得分:0 
回复 3 楼 三个人
主函数中parr是指针,若要修改这个指针中的内容,必须把这个指针的地址发送给另外一个双重指针变量,通过这个双重指针可以修改原指针指向的内容
2014-10-06 12:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-436892-1-1.html




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

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