char指针的多维数组

时间:2013-05-05 13:37:51

标签: c++ c string pointers multidimensional-array

每个人都过得愉快,

有一些我无法弄清楚的大问题。 我创建了一个多维指针数组:

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] 字符串。

只有当我在listA中写入时,

strMix列才是正确的,并立即读取它。当然,我会说。

例如:

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

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

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

感谢您的时间,无论如何。 FDT。

2 个答案:

答案 0 :(得分:2)

你没有在这个数组中保存字符串 - 你正在保存指针。

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

 listA[j][0]=strMix;

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

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

无论如何,要复制字符串,请更喜欢strncpy()到不安全的strcpy()

答案 1 :(得分:1)

是C还是C ++?也许不是使用作业:

listA[j][0]=strMix;

你应该使用strcpy函数吗?

strcpy (listA[j][0], strMix);