求大神指点结构体输出

求大神指导结构体输出
#include<stdio.h>
struct stu
{
int num;
char name[20];
int score;
};
void input (struct stu a[],int m)
{
int i;
for(i=0;i<m;i++)
{
printf("请输入学生的学号姓名成绩\n");
scanf("%d,%s,%d",&a[i].num,a[i].name,&a[i].score);
}
}
void max(struct stu a[],int n)
{
int i,p=0,m=a[0].score;
struct stu max;
for(i=1;i<n;i++)
{
if(a[i].score>m)
{
p=i;
m=a[i].score;
max.name=a[i].name;
max.num=a[i].num;
max.score=a[i].score;
}
}
printf("%d\t%s\t%d\n",max.num,max.name,max.score);
}
main()
{
struct stu a[2];
input(a,2);
max(a,2);
}要求输出四个学生中成绩最高者,信息包括学号、姓名、成绩。求大神帮忙给改改
结构体、c语言

------解决方案--------------------
struct stu
{
  int num;
  int score;
  char name[20];  //换了下位置,如果不换位置你输入的字符长度一定要是20
};

void input (struct stu a[],int m)
{
  int i;
  for(i=0;i<m;i++)
  {
    printf("请输入学生的学号姓名成绩\n");
    scanf("%d,%d,%s",&a[i].num,&a[i].score,a[i].name);
  }
}


------解决方案--------------------
主要问题在这:max.name=a[i].name;
数组不成直接赋值,加头文件#include string.h
strcpy(max.name, a[i].name);
------解决方案--------------------
引用:
主要问题在这:max.name=a[i].name;
数组不成直接赋值,加头文件#include string.h
strcpy(max.name, a[i].name);


是的  数组的名字是属于地址常量 不允许赋值修改的
------解决方案--------------------
#include<stdio.h>
struct stu
{
  int num;
  char name[20];
  int score;
};
void input (struct stu a[],int m)
{
  int i;
  for(i=0;i<m;i++)
  {
    printf("请输入学生的学号姓名成绩\n");
    scanf("%d%19s%d",&a[i].num,a[i].name,&a[i].score);
  }
}
void max(struct stu a[],int n)
{
  int i, m = 0; 
  for(i=1;i < n;i++)
  {
    if(a[i].score > a[m].score)
    {
      m = i;
    }
  }
  printf("%d\t%s\t%d\n",a[m].num,a[m].name,a[m].score);
}

int main()
{
  struct stu a[2];
  input(a,2);
  max(a,2);
  return 0;
}


测试

请输入学生的学号姓名成绩
1 jack 89
请输入学生的学号姓名成绩
2 marry 99
2       marry   99
请按任意键继续. . .

------解决方案--------------------
引用:
不行啊,这样改,我在vc6.0上运行还是不对啊


1. 请描述错误或者通过分析调试找到原因。 
2. vc 6.0实在太陈旧了。