他对c / c ++非常陌生,并且希望我能够在修复错误方面朝着正确的方向前进。
我正在创建一个程序,它打开一个文件并读取文件中的文本并将其放入一个字符串中。从那里我创建了一个二维数组,通过获得字符串可以容纳的最小正方形的平方根来找到它的大小。现在我们到达我遇到麻烦的地方,从这一步我试图把使用以下代码逐列到数组中。
char newarray[b][b]; //b being the square root of the closest perfect square.
57
58 //put string into arrray;
59 for(int row=0; row < b; row++)
60 {
61 for(int column=0;column < b; column++)
62 {
63 newarray[row][column] = newstring[row];
64 }
65 }
但是当我打印这个数组时,文本中每个单独的字母都会填满该行中的每个元素。
即
string s= "supercalifragilistic";
char[5][5];
// I want it to come out like this
0 1 2 3 4 5
1 s u p e r
2 c a l i f
3 f r a g i
4 l i s t i
5 c
//but it comes out like this
0 1 2 3 4 5
1 s s s s s
2 u u u u u
3 p p p p p
4 e e e e e
5 r r r r r
答案 0 :(得分:3)
为源字符串使用不同的索引。
tasks.py
答案 1 :(得分:2)
您只需声明一个整数变量,以指定您所处的String的字符,并在每次分配后递增。
char newarray[b][b]; //b being the square root of the closest perfect square.
int counter = 0;
for(int row = 0; row < b; row++){
for(int column=0;column < b; column++){
newarray[row][column] = newstring[counter];
counter++;
}
}
答案 2 :(得分:1)
使用不同的索引遍历字符串。
在当前代码中,进行修改:
int k=0;
for(int row=0; row < b; row++)
{
for(int column=0;column < b; column++)
{
newarray[row][column] = newstring[k++];
}
}
这是因为:在之前的代码中,这就是newarray
填充的方式:
Say, b = 2
newarray[0][0] = newstring[0];
newarray[0][1] = newstring[0];
newarray[0][2] = newstring[0];
newarray[1][0] = newstring[1];
newarray[0][1] = newstring[1];
等等。
但是,你想要的东西是:
newarray[0][0] = newstring[0];
newarray[0][1] = newstring[1];
newarray[0][2] = newstring[2];
newarray[1][0] = newstring[3];
newarray[0][1] = newstring[4];
等等。
一种方法是使用变量,例如k
,0
的{{1}}变为string length
。
答案 3 :(得分:0)
您的问题不包含足够的信息,但如果我在内部for
循环内正确理解您的问题,则您不会为newstring
增加索引 }。
您需要更改
newarray[row][column] = newstring[row];
到
newarray[row][column] = newstring[(row * b) +column];