【发布时间】:2013-04-29 09:39:06
【问题描述】:
大家好,
有一些我想不通的大问题。 我创建了一个多维指针数组:
char *listA[5000][2];
在特定情况下,我希望将特定字符串保存在此数组中。 这些是一个普通的字符串,在一个简单的变量中,另一个包含在一个字符串数组中。
listA[j][0]=strMix;
listA[j][1]=ingredients[i];
j++;
j,当然是行,每增加一次。
结果必须是一个数组,每行包含两列,一列包含成分,另一列包含相对的 strMix。
问题是当我尝试读取这个多维数组时:
printf( "%s", listA[0][1]); // the ingredient
总是正确的,但是:
printf( "%s", listA[0][0]); // the strMix code
总是不正确的;它准确地读取每一行的最后一个 strMix 读取。
我试图改变列的顺序,但令我大吃一惊的是,问题总是出在 strMix 上,而不是 ingredients[i] 字符串。
strMix 列只有在我将其写入 listA 并立即读取时才是正确的。当然,我会说。
例如:
printf("Current: %s vs Previously: %s",lista[j][0], lista[j-1][0]);
它们是相同的,对于每个 j,等于最后一次读取的 strMix。
如果您有任何想法、关于内存或多维指针数组的任何想法,而我只是缺少这些,我会很感激您的建议。
感谢您抽出宝贵时间。 fdt.
【问题讨论】:
-
你在那里展示的一切似乎都是合理的——向我们展示你初始化这个数组的代码。这可能就是你的麻烦所在。
-
这是一个常见问题。通常问题是没有为每个读取的项目分配一个新字符串。
-
告诉我们你在哪里设置指针strMix,或者它指向的数组的内容。
-
Tnx Carl Norum、Vaughn Cato 和 Andy Thomas-Cramer。 strMix 是一个由函数操作的字符串。
标签: c++ c string pointers multidimensional-array