0

祝大家有美好的一天,

有什么大事我想不通。我创建了一个多维指针数组:

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 上,而不是出在成分 [i]字符串上。

仅当我将 strMix 列写入 listA 并立即读取它时,它才是正确的。当然,我会说。

例如:

printf("Current: %s vs Previously: %s",lista[j][0], lista[j-1][0]);

它们是相同的,对于每个 j,等于最后一次 strMix 读取。

如果您有任何想法,关于内存或多维指针数组的任何想法,我只是缺少这些,我会很感激您的建议。

谢谢你的时间,在任何情况下。fdt。

4

2 回答 2

2

你不是在这个数组中保存字符串——你是在保存指针。

此语句复制地址,而不是字符串:

 listA[j][0]=strMix;

如果要复制字符串,可以:

  • 使用存储字符串的 char 数组。对于某些字符串,这可能会占用太多内存。对于其他人来说,它可能提供的还不够。
  • 使用 char* 数组来存储字符串的地址,为每个引用的字符串分配单独的内存。

无论如何,要复制字符串,最好strncpy()不要使用 unsafe strcpy()

于 2013-05-05T13:53:44.550 回答
1

是 C 还是 C++?也许而不是使用分配:

listA[j][0]=strMix;

你应该使用 strcpy 函数吗?

strcpy (listA[j][0], strMix);
于 2013-05-05T13:45:34.403 回答