正如标题所示,我正在尝试使用下面代码中的int结构成员monthName[12][10]
在数组allData[i].month
中打印一个元素...
void printVerbose(const struct DailyData allData[],int sz){
//print month, day, year and weather data according to # of rows passed in the function
char monthName[12][10] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
int i;
for (i=0;i<sz;i++) {
float aver = average(allData[i].high,allData[i].low);
printf("\n%s %d %d %d: %.1f ", monthName[allData[i].month], allData[i].month, allData[i].day, allData[i].year, aver);
draw(symbolToDraw(allData[i].condition, aver),20);
}
}
然而,在打印了一些不成功的线之后......
程序终止,我收到一条错误消息。当我在linux上编译这段代码时,它提到了一些关于分段错误的东西,但是我不知道我做错了什么。据我所知,allData[i].month
应该产生一个介于1到12之间的常规内插(这肯定是它在任何其他情况下打印的数字范围),所以我很确定它与存储的数字无关在结构中,我仍然遇到这个问题。显然这与取消引用monthName[][]
数组中的错误位置有关,但我不明白为什么如果传递的数字在可接受的范围内则应该是这种情况。有人知道为什么会发生这种段错误吗?