我有一个运行时错误,它会从数组写入的数据多于打印ID,AverageMarks和Status的假设:
宣言&它的功能
char StudentStatus[10][7];
for(x=0;x<10;x++)
{
fprintf(OutputFile,"%d\t\t%d\t\t\t%s\n",StudentID[x],StudentAvg[x],StudentStatus[x]);
}
但打印时
100 77 DismissActive
101 85有效
102 88有效
103 86有效
104 85有效
105 84有效
106 84有效
107 82有效
108 92有效
109 75解雇
阵列的填充方式:
for(x=0;x<NumOfStudent;x++)
{
if(StudentAvg[x]>80)
{
strcpy(StudentStatus[x],"Active");
printf(". ");
}
else
{
strcpy(StudentStatus[x],"Dismiss");
printf(". ");
}
}
其他陈述工作正常,但第一句话确实让我很烦恼。我错误编码的任何建议?
答案 0 :(得分:5)
要允许终止null,请将数组声明更改为:
char StudentStatus[10][8];
C字符串以空值终止,因此字符串“Dismiss”至少需要8个字节的存储空间。