结构体指针一问
请问为何不行呢?我快疯了。
程序代码:# include <stdio.h>
# include <malloc.h>
//函数前置声明
void InputStudent(struct Student ** p, int len);
void OutputStudent(struct Student ** p, int len);
//结构体,构建学生结构体
struct Student
{
int a;
float b;
char c[10];
};
//主函数
int main(void)
{
struct Student * p;
struct Student t;
int len, i, j;
printf("请输入学生的人数:");
scanf("%d", &len);
p = (struct Student *) malloc (len * sizeof(struct Student));
//输入
InputStudent(&p, len);
//冒泡排序
for(i=0; i<len-1; i++)
{
for(j=0; j<len-1-i; j++)
{
if(p[j].b < p[j+1].b)
{
t = p[j];
p[j] = p[j+1];
p[j+1] = t;
}
}
}
//输出
OutputStudent(&p, len);
return 0;
}
//输入函数
void InputStudent(struct Student ** p, int len)
{
int i;
for(i=0; i<len; i++)
{
printf("请输入第 %d 个学生的信息:\n", i+1);
printf("年龄:");
scanf("%d", &(*p[i]).a);
printf("成绩:");
scanf("%f", &(*p[i]).b);
printf("姓名:");
scanf("%s", (*p[i]).c); //赋值出错?搞了一天没弄懂
}
return;
}
//输出函数
void OutputStudent(struct Student ** p, int len)
{
int i;
printf("\n\n学生信息如下:\n");
for(i=0; i<len; i++)
{
printf("第 %d 个学生的信息:\n", i+1);
printf("年龄: %d ", (*p[i]).a);
printf("成绩: %f ", (*p[i]).b);
printf("姓名: %s \n", (*p[i]).c);
}
return;
}
[ 本帖最后由 lixnkei 于 2010-3-4 17:07 编辑 ]










这样改吧!