我正在尝试用字符填充二维数组。我有以下代码,它似乎工作,但不正确。所以问题是用'。'填充整个数组。字符。什么似乎是我的问题?为什么每个“单词”都不在它自己的行上?
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;
结果
. . . .
. . . .
答案 0 :(得分: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++;
}
This链接也可以为您提供帮助。
答案 1 :(得分: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;
}
}
未经测试的代码。
与你的代码不同,它确实在输入中查找空格,如果你考虑它,几乎需要将文本分成单词。
答案 2 :(得分: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++;
}