2015-09-30 72 views
0

我正在輸入2D字符數組,並且必須在用戶按下回車鍵時停止輸入。但是我的代碼沒有顯示任何輸出。
輸入:輸入2d字符數組時出錯

5 // where this is the number of columns, 
    // number of rows are unknown so have taken maximum rows as: 40 

陣列:

toioynnkpheleaigshareconhtomesnlewx 

預期輸出:

i = 7, j = 5 

這裏是我的代碼:

int main(){ 
    char a[100][100]; 
    int n, i, j, p, q; 
    cin >> n; 
    if(n==0) 
     exit(0); 

    for(i = 0; i < 40; i++){ 
     for(j = 0; j < n; j++){ 
      cin >> a[i][j]; 

      if(a[i][j]==13) // 13 = ASCII code for enter key 
       goto jump; 
     } 
    } 

jump: 
    cout<<i<<"\n"<<j<<"\n"; 

} 

但它不打印任何東西。

它有什麼問題?

回答

0

這是因爲cin忽略了空格和換行符('\ n',其ASCII碼爲13)。這意味着條件if(a[i][j] == 13)從來沒有評估爲真。

解決方案:使用cin.get(a[i][j])代替cin>>a[i][j]

這工作,因爲cin.get()方法不忽略換行符( '\ n')。

+0

它仍然無法正常工作 – Knight

+0

嘗試將if條件更改爲:if(a [i] [j] =='\ n')'而不是將該值與13進行比較。 –

+0

仍然不起作用 – Knight