数组的大小的定义为啥必须要大一点,当按原大小定义时输出最后面就会不会的东西,能详细讲一下代码里面的数组字符串的是读入情况吗,(也就是为啥不大一点定义就是下面错的结果)很迷惑。
//数组定义小了
#include<stdio.h>
struct student {
char id[20];
int num1;
int num2;
};
int main()
{
struct student stu[1000];
int i,n;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%s", stu[i].id) ;
scanf("%d %d", &stu[i].num1, &stu[i].num2);
}
int check;
int j,k;
scanf("%d", &check);
for (i = 0; i < check; i++)
{
scanf("%d",&k);
for (j = 0; j < n; j++)
{
if (k == stu[j].num1)
{
printf("%s %d\n", stu[j].id, stu[j].num2);
}
}
}
return 0;
}
这是正确的代码;
当把char id[20]改成16就错了