[英]error: excess elements in char array initializer
我正在為大學分配天氣報告。 我正在研究一個函數,該函數應該打印出所有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
值組成的數組,並且由於元素是字符串文字,並且由多個字符組成,因此初始化器中有多余的元素,因此會出現錯誤消息。
相反,您可以定義一個char*
數組,其中每個元素都將指向數組中每個字符串文字的開頭。
const char* monthNames[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
因為這些字符串可能會以二進制文件的只讀數據段結尾。 將它們聲明為const
不會有傷害。
在你的代碼中
char monthNames[12]
表示一個char數組,不是一個字符串,而是一個字符。 您必須將數組更改為以下形式:
char* montNames[12]
為了有一個字符串數組而不是一個簡單的字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.