用字符填充二维数组

filling a two dimensional array with characters

本文关键字:二维数组 填充 字符      更新时间:2023-10-16

我正在尝试用字符填充二维数组。我有以下代码,它似乎有效,但不正确。所以问题是它用"."字符填充整个数组。我的问题似乎是什么?为什么每个"词"都不在自己的行上?

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;

结果

. . . .
. . . .
这个

怎么样

int row = 0;
int col = 0;
for (int pos = 0; pos < strlen(block); ++pos)
{
    if (block[pos] == ' ')
    {
        Table[row][col] = ''; // 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;
    }
}

未经测试的代码。

与代码不同,它确实在输入中查找空格,如果您考虑一下,几乎需要将文本分成单词。

因为每次迭代外部"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++;
}

我想你想做的是这样的:

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] = '';
      row++;
      col = 0;
    }
    else
    {
      table[row][col] = block[pos];
      col++;
    }
    }
    pos++;
}

此链接也可以为您提供帮助。