C / C ++将字符串放入二维数组?
Posted
技术标签:
【中文标题】C / C ++将字符串放入二维数组?【英文标题】:C / C++ Putting a string into a two dimensional array? 【发布时间】:2015-05-07 07:31:10 【问题描述】:嘿,我对 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
【问题讨论】:
newarray[row][column] = newstring[row + b*column]; 所以 C xor C++?你不能同时用两种语言编程。解决方案很大程度上取决于您使用的语言。 【参考方案1】:对源字符串使用不同的索引。
char newarray[b][b]; //b being the square root of the closest perfect square.
//put string into arrray;
int i=0;
for(int row=0; row < b; row++)
for(int column=0;column < b; column++, i++)
newarray[row][column] = newstring[i];
【讨论】:
【参考方案2】:你只需要声明一个整数变量来指定你在字符串中的哪个字符,并且在每次赋值后递增。
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++;
【讨论】:
【参考方案3】:使用不同的索引来遍历字符串。
在当前代码中,进行修改:
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
,将newstring
从0
变为string length
。
【讨论】:
【参考方案4】:您的问题没有包含足够的信息,但如果我正确理解了您的问题,在内部 for
循环内,您不会增加 newstring
的 索引。
你需要改变
newarray[row][column] = newstring[row];
到
newarray[row][column] = newstring[(row * b) +column];
【讨论】:
你的意思是 [row*b+column] 吗?以上是关于C / C ++将字符串放入二维数组?的主要内容,如果未能解决你的问题,请参考以下文章