奇怪的运行时错误,fprintf写的不仅仅是问

时间:2013-12-23 03:34:46

标签: c

我有一个运行时错误,它会从数组写入的数据多于打印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(". ");
  }
}         

其他陈述工作正常,但第一句话确实让我很烦恼。我错误编码的任何建议?

1 个答案:

答案 0 :(得分:5)

要允许终止null,请将数组声明更改为:

char StudentStatus[10][8];

C字符串以空值终止,因此字符串“Dismiss”至少需要8个字节的存储空间。