结构体指针一问
请问为何不行呢?我快疯了。程序代码:
# 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 编辑 ]