我正在为大学作业创建天气预报。我正在开发一个函数,假设打印出所有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);
}
}
答案 0 :(得分:1)
您已经定义了一个单独的char
值数组,并且由于元素是字符串文字并且由多个字符组成,因此初始化程序中有多余的元素,因此会显示错误消息。
相反,你可以定义一个char*
数组,其中每个元素都指向数组中每个字符串文字的开头。
const char* monthNames[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
因为这些字符串可能最终会出现在二进制文件的只读数据段中。声明它们const
不会有害。
答案 1 :(得分:0)
在您的代码中
char monthNames[12]
表示char数组,不是字符串,而是单个字符。 您必须将数组更改为以下内容:
char* montNames[12]
为了拥有一个字符串数组而不是一个简单的字符。