每个人都过得愉快,
有一些我无法弄清楚的大问题。 我创建了一个多维指针数组:
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。
答案 0 :(得分:2)
你没有在这个数组中保存字符串 - 你正在保存指针。
此语句复制地址,而不是字符串:
listA[j][0]=strMix;
如果要复制字符串,可以:
无论如何,要复制字符串,请更喜欢strncpy()
到不安全的strcpy()
。
答案 1 :(得分:1)
是C还是C ++?也许不是使用作业:
listA[j][0]=strMix;
你应该使用strcpy函数吗?
strcpy (listA[j][0], strMix);