2012-03-18 13 views
0

の行列を定義しますか?例えばこの場合、charArray [0] [0]は '>'、charArray [2] [1]は '%'などとなります。ユーザは、次のようなユーザ入力から文字

getchar();しかし、私は残っていた「\ n」にはあらゆる種類の問題を抱えていましたが、おそらくこれを実行する全く異なる方法がはるかに優れていると考えられました。

char matrix[MAX][MAX]; 
char c; 
int matSize; 

std::cin >> matSize; 

for (int i = 0; i < matSize; ++i) 
    { 
     int j = 0; 

     while ((c = getchar()) != '\n') 
     { 
      matrix[i][j] = c; 
      ++j; 
     } 
    } 

答えて

0

C++を使用しているので、std :: cinとstd :: stringを使用して穴の行を読み取らないようにしてください。おそらく最良の選択肢ではありませんが、機能します。すべてのmatrix[i]以来

for (int i = 0; i < matSize; ++i) 
{ 
    std::cin >> in; 
    if (in.length() < matSize) 
    { 
     printf("Wrong length\n"); 
     return 1; 
    } 
    for (int j = 0; j < matSize; j++) 
    matrix[i][j] = in[j]; 
} 
0

は、あなたが簡単に使用することができ、固定サイズのchar型の配列ですstd::istream::getline

#include <iostream> 
#include <istream> 

#define MAX 10 

int main() 
{ 
    char matrix[MAX][MAX]; 
    char c; 
    int matSize; 

    std::cin >> matSize; 
    std::cin >> c; // don't forget to extract the first '\n' 

    if(matSize > MAX){ // prevent segmentation faults/buffer overflows 
     std::cerr << "Unsupported maximum matrix size" << std::endl; 
     return 1; 
    } 

    for(int i = 0; i < matSize; ++i){ 
     std::cin.getline(matrix[i],MAX); // extract a line into your matrix 
    } 


    std::cout << std::endl; 
    for(int i = 0; i < matSize; ++i){ 
     std::cout << matrix[i] << std::endl; 
    } 

    return 0; 
} 
関連する問題