C语言结构体怎么在一个函数中赋值后被另外函数调用进行输出.下面代码刚写的输出结果是最后录入的那个信息

# include <stdio.h>struct Student{ char name[100]; char sex[2]; float result;};// 录入学生信息函数void InputStudent(struct Student * pst, int len){ int i; for (i=0; i<len; ++i) {  printf ("第%d位学生信息:\n", i+1);  printf ("名字: ");  scanf ("%s", pst->name);  printf ("性别: ");  scanf ("%s", pst->sex);  printf ("成绩: ");  scanf ("%f", &pst->result);  printf ("\n\n\n");  }}// 输出按成绩排序好的学生信息void OutputStudent (struct Student * pst, int len){ int i; for (i=0; i<len; ++i) {  printf ("成绩第%d名学生信息:\n", i+1);  printf ("名字: %s\n", pst->name);  printf ("性别: %s\n", pst->sex);  printf ("成绩: %f\n", pst->result);  printf ("\n"); }}int main(void){ int len; struct Student st; printf ("请输入学生个数: "); scanf ("%d", &len); printf ("\n"); InputStudent(&st, len); OutputStudent(&st, len); return 0;}

试试改成这样

# include <stdio.h>
struct Student
{ char name[100];
char sex[2];
float result;};

// 录入学生信息函数
void InputStudent(struct Student * pst, int len)
{
printf ("第%d位学生信息:\n", i+1);
printf ("名字: "); scanf ("%s", pst->name);
printf ("性别: "); scanf ("%s", pst->sex);
printf ("成绩: "); scanf ("%f", &pst->result);
printf ("\n\n\n"); }

// 输出按成绩排序好的学生信息
void OutputStudent (struct Student * pst, int len)
{
printf ("成绩第%d名学生信息:\n", i+1);
printf ("名字: %s\n", pst->name);
printf ("性别: %s\n", pst->sex);
printf ("成绩: %f\n", pst->result);
printf ("\n"); }

int main(void)
{ int len;
struct Student st;
printf ("请输入学生个数: ");
scanf ("%d", &len);
printf ("\n");
for(int i=0;i<len; i++){
InputStudent(&st, len);
OutputStudent(&st, len);}
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-05
这个问题主要是内存覆盖,所以你只能看到最后输入的那个信息,这里建议你考虑链表编程,即结构体中,增加一个 student* nextstudent; 另一个方法是,你用你定义的结构体类型定义一个数组也可以解决问题比如 student std[10]。
第2个回答  2012-07-05
可以用vector保存输入的结构体数据
相似回答