求助!!!关于C里scanf %s %c和结构体之间的疑惑!!!

最近在编一个学生成绩管理系统,然后就发现了一个问题.....
scanf("%s %s %c ",name,stunum,&sex);
在运行时输入Xiaoming 2015000000 F
输出的stunum是2015000000, sex是F
但是把语句改成
scanf("%s %s %c ",student[0].name,student[0].stunum,&student[0].sex);
输入和上面一样的东西,输出却变成了stunum是2015000000F,sex还是F
为什么啊?不明白TAT
难道结构体里的字符串和普通字符串不一样么

求高手拯救我这个小白orz

stunum分配的长度是多少,很可能是分配长度过短,结果越界访问到了sex字段。请保证至少分配字符串长度+1。以便存储字符串和结束的\0

结构体和普通字符应该是没有什么区别的啊。。。。你还是把代码贴出来吧。。。

....
struct information
{

char name[10],stunum[10];
char sex;
int grade[6],total;
}student[10]={0};
....
void input() //输入信息模块
{
system("cls");
int i,j;
printf(" 姓名 \t学号\t性别 高数 大语 英语 C语言 大物 体育\n");

for(i=0;i<10;i++)
{
//输入Xiaoming   2015000000   F      87     88     86     93     79     85
  scanf("%s   %s   %c",student[i].name,student[i].stunum,&student[i].sex);    
  for(j=0;j<6;j++)
    {
      scanf("%d",&student[i].grade[j]);
   }

  printf("\n"); 
}
printf("\n%c",student[0].sex);
printf("\n%s",student[0].stunum);

}

stunum的字符长度分配太短了,至少分配字符数+1,因为%s默认给添加了一个\0作为字符串的结尾。因为你这里的输入2015000000位10个字符,
因此长度至少要设置为11