簡體   English   中英

錯誤:char數組初始化程序中的多余元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM