2013-12-14 41 views
-5

這個腳本應該讀取鍵盤字符,它們存儲到數組,然後輸出它們:我得到C++語法錯誤

#include <iostream> 
#include <cstdlib> 
#include <string> 

using namespace std; 
void storeArraysintoStruct(char[], int); 

int main() 
{ 
    char test[] =""; 
    int a = 0; 
    storeArraysintoStruct(test, a); 
    system("pause"); 
    return 0; 
} 

void storeArraysintoStruct(char test[], int a) 
{ 
    int n; 
    cout << "Enter number of entries: " << endl; 

    cin >> n; 
    int i = 0; 

    for (i=0, i<n, i++) 

    { 
     cout << "Enter your character: " << endl; 
     cin.getline(test, n); 
    } 

    while (i < n) 
    { 
     cout << test[i] << endl; 
     i++; 
    } 

} 

編輯:固定它:

#include <iostream> 
#include <cstdlib> 
#include <string> 

using namespace std; 
void storeArraysintoStruct(char[], int); 

int main() 
{ 
    char test[40] = ""; 
    int a = 0; 
    storeArraysintoStruct(test, a); 
    system("pause"); 
    return 0; 
} 

void storeArraysintoStruct(char test[], int a) 
{ 
    int n; 
    cout << "Enter number of entries: " << endl; 

    cin >> n; 
    int i; 


    for (i=0; i < n; i++) 

    { 
     cout << "Enter your character: " << endl; 
     cin >> test[i]; 
     if (test[n-1]) 
     { 
     cout << endl; 
     } 
    } 

    i =0; 
    while (i < n) 
    { 
     cout << test[i] << endl; 
     i++; 
     if(test[n-1]) 
     { 
      cout << endl; 
     } 
    } 

}

但是,我收到錯誤預期:「)」和「;」之前的主要表達式之前。任何幫助將不勝感激。

編輯:腳本不能按預期工作,因爲它不會輸出存儲的字符。任何建議將不勝感激。

+4

這是一個簡單的例子,它知道一個語言結構的正確語法是什麼(它應該已經被你在循環中讀過的第一個教程涵蓋了)。你的'for()'應該是'for(i = 0; i Bojangles

+0

謝謝,但是沒有意義的表達式...... – user3088723

+0

user3088723這是一個語法錯誤標點符號錯誤。我已更改問題標題 –

回答

1

語法錯誤已在註釋中指出。另外,如前所述,在for循環之後,您不會重置i,這會阻止您的while循環運行。

但是,你也必須採取記住,這

char test[] = ""; 

僅分配1個字符數組test長。您不能將多個數據字符放入該數組中。換句話說,您的storeArraysintoStruct肯定會溢出陣列並進入未定義的行爲區域。

如果要在storeArraysintoStruct中預先分配更大的緩衝區以供將來使用,則必須明確指定大小。例如

char test[1000] = ""; 

將使test爲1000個字符的數組。當然,無論陣列多大,您都有責任遵守尺寸限制。

P.S.這個參數a是什麼意思,如果你從來沒有用過storeArraysintoStruct

+0

對不起,我被教導使用a作爲數組參數的限制。但我忘了使用它。 – user3088723

+0

@ user3088723:的確如此。如果你在'main'中聲明瞭一個大小數組,例如'1000',那麼應該通過'a'參數將'1000'傳遞給函數。然後,在函數內部,您應該使用該參數來確保不會超出緩衝區。代碼中目前沒有這樣的內容。 – AnT

相關問題