当我尝试在某个数组中打印元素时,会产生分段错误。为什么?

时间:2015-12-06 18:47:43

标签: c arrays memory-management segmentation-fault

正如标题所示,我正在尝试使用下面代码中的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);

}

}

然而,在打印了一些不成功的线之后......

Muh image

程序终止,我收到一条错误消息。当我在linux上编译这段代码时,它提到了一些关于分段错误的东西,但是我不知道我做错了什么。据我所知,allData[i].month应该产生一个介于1到12之间的常规内插(这肯定是它在任何其他情况下打印的数字范围),所以我很确定它与存储的数字无关在结构中,我仍然遇到这个问题。显然这与取消引用monthName[][]数组中的错误位置有关,但我不明白为什么如果传递的数字在可接受的范围内则应该是这种情况。有人知道为什么会发生这种段错误吗?

0 个答案:

没有答案