我正在爲大學任務創建天氣報告。我正在開發一個假設打印出所有12個月數據的函數。我有一個大小爲12的數組,並且擁有12個月的名稱。當我編譯的程序中,我不斷收到以下錯誤:錯誤:字符數組初始值設定項中的元素過多
assignment3.c:149:5: error: excess elements in char array initializer
下面是有這個陣列功能:
void printMonthlyStatistic(int month,const struct MonthlyStatistic* monthly){
int i;
char monthNames[12] = {"January", "February", "March", "April", "May", "June", "July", "August",
"September", "October", "November", "December"};
for (i=0;i<12;i++) {
printf(" %c | %.1f | %.1f | %.1f | %.1f \n",monthNames[i],monthly->maxTemperature,monthly->minTemperature,monthly->averageTemperature,
monthly->totalPrecipitation);
}
}
它應該是'char * monthNames [12]'。 –
請注意,這假定你將1月編碼爲0,將12月編碼爲11月。標準C庫在'struct tm'中執行該操作;大多數其他代碼不會。 –
而不是所有建議使用const char * monthNames [12]'(這當然有效)。你也可以使用const char monthNames [12] [10] = {「January」,「February」,「March」,「April」,「May」,「June」,「July」,「August」 「,」October「,」November「,」December「};'在64位系統上,這比指針數組(96字節)加上字符串(86字節)佔用更少的空間(120字節)。 OTOH,在64位系統上,64字節左右確實沒有關係。 –