1

2次元配列を文字で埋めようとしています。次のコードがあり、動作しているように見えますが、正しくありません。したがって、問題は、配列全体が「。」で埋められることです。文字。私の問題は何ですか?各「単語」がそれぞれの行にないのはなぜですか?

char Table[10][50];
char block[100] = "the cat and the hat.";
int pos = 0;

while (pos < StrLen(block)) {
    for(int i = 0; i < 10; i++) {
        for(int y = 0; y < 50; y++) {
            Table[i][y] = block[pos];
        }
    }
    pos++;
}

cout << Table[0][0] << " " << Table[0][1] << " " << Table[0][2] << endl;
cout << Table[1][0] << " " << Table[1][1] << " " << Table[1][2] << endl;

結果

. . . .
. . . .
4

3 に答える 3

0

外側の「while」ループを反復するたびに、「Table[i][y]」を上書きし、外側のループを移動して次の変更を行うためです。

char Table[10][50];
char block[1000] = "the cat and the hat.";
int pos = 0;

for(int i = 0; i < 10 && i<strlen(block); i++) {
   for(int y = 0; y < 50; y++) {
       Table[i][y] = block[pos];       
    }
    pos++;
}
于 2013-11-10T08:25:18.233 に答える
0

あなたがやりたいことは、私が思うに次のようなものです:

char Table[10][50];
char block[1000] = "the cat and the hat.";
int pos = 0;
int row = 0;
int col = 0;

while (pos < strLen(block)) {
    if(block[pos] == ' ')
    {
      table[row][col] = '\0';
      row++;
      col = 0;
    }
    else
    {
      table[row][col] = block[pos];
      col++;
    }
    }
    pos++;
}

このリンクも役立ちます。

于 2013-11-10T08:17:16.843 に答える
0

これはどう

int row = 0;
int col = 0;
for (int pos = 0; pos < strlen(block); ++pos)
{
    if (block[pos] == ' ')
    {
        Table[row][col] = '\0'; // make sure each row is null terminated
        ++row;                  // move to the next row
        col = 0;                // starting at column zero
    }
    else
    {
        Table[row][col] = block[pos];
        ++col;
    }
}

テストされていないコード。

あなたのコードとは異なり、入力内のスペースを探します。これは、テキストを単語に区切るためにかなり必要です。

于 2013-11-10T08:20:56.970 に答える