2016-04-27 230 views
1

當我嘗試編譯我正在處理的某些源代碼時,出現此錯誤。我很新的編程和陣列已經讓我很難因爲某些原因:C++:爲'char [4]'獲取太多初始值設定項數組錯誤

airline2.cpp:9:84: error: too many initializers for ‘char [4]’ 
    char array_seats[][4] = {{'1', '2', '3', '4', '5', '6', '7'},{'A', 'B', 'C', 'D'}}; 

這是我的源代碼:

#include <iostream> 
using namespace std; 

int main() 
{ 
    char row, letter, answer; 
    int letter2; 

    char array_seats[][4] = {{'1', '2', '3', '4', '5', '6', '7'},{'A', 'B', 'C', 'D'}}; 

    for (int row = 0; row <= 6; row++) 
    { 
     for (int letter = 0; letter <= 4; letter++) 
    { 
     cout << array_seats[row][letter] << " "; 
    } 
     cout << endl; 
    } 

    do 
    { 
     cout << "Enter your desired seat row:\n"; 
     cin >> row; 
     cout << "Enter a seat letter:\n"; 
     cin >> letter; 

     if(letter == 'A' || letter == 'a') 
    letter2 = 1; 
     else if(letter == 'B' || letter == 'b') 
    letter2 = 2; 
     else if(letter == 'C' || letter == 'c') 
    letter2 = 3; 
     else if(letter == 'D' || letter == 'd') 
    letter2 = 4; 

     if(array_seats[row-1][letter2] == 'X') 
    cout << "Sorry, this seat is taken.\n" << endl; 

     else 
    { 
     array_seats[row-1][letter2] = 'X'; 
     cout << "Seat reservation successful.\n" << endl; 
    } 

     for (int row = 0; row <= 6; row++) 
    { 
     for (int letter = 0; letter <= 4; letter++) 
     { 
      cout << array_seats[row][letter] << " "; 
     } 
     cout << endl; 
    } 

     cout << "Would you like to try again? (Y/N)\n"; 
     cin >> answer; 

    }while (answer == 'Y' || answer == 'y'); 

    cout << "Have a good flight!\n"; 

    return 0; 

} 

我試過誤差設置爲5和添加'\ 0'結束,但似乎沒有任何工作。任何幫助?

+0

把它改成'char array_seats [] [7]'。 – songyuanyao

+2

那麼它說_「太多初始化」_。你有沒有嘗試減少初始化器的數量? –

+0

您正在初始化一個數組以包含任意數量的4個字符的數組。你有兩個嵌套的初始化器 - 一個包含7個字符和一個包含3個字符。那麼,鑑於這個原因,假設你試圖初始化一個4字符數組,那麼「太多初始化器」的信息是否有意義? – davidbak

回答

1

有一個語法錯誤的方式你正試圖初始化二維數組。

char array_seats[][4] = {{'1', '2', '3', '4', '5', '6', '7'},{'A', 'B', 'C', 'D'}}; 

上面一行表示每行將有4個元素。如果你看到第一行,它有7個元素{1,2,3,4,5,6,7}。將其減少到4個元素,編譯錯誤將消失。所以你的array_seats現在有2行4列

注意:以上的做法將解決編譯錯誤,但你的程序遭受嚴重的運行時錯誤。特別是當你試圖訪問array_seats [2] [0]等。

2
char array_seats[][4] = {{'1', '2', '3', '4', '5', '6', '7'},{'A', 'B', 'C', 'D'}}; 

{ '1', '2', '3', '4', '5', '6', '7'}是超過4

相關問題