我有一个指向指针数组的指针。我在下面的 while 循环中分配每一行,while 循环内的 printf 显示每一行都分配了我的 ID 号 1-20。
之后,在 while 循环之外,我遍历数组,每个元素都用 id 20 写入?
任何帮助是极大的赞赏。 (仅供引用 - 我正在使用 Template2doc 库和 example1.c,在底部 - http://www.algonet.se/~thunberg/template2doc/c_version/docs/index.htm)
下面的代码只显示了问题区域,我把剩下的都去掉了。
char **tableData[500]={NULL};
char *myData[500][2];
while(rc == SQLITE_ROW){
tableData[r] = myData[r];
printf(*tableData[r]); <-- Displays id 1-20 fine
r=r+1;
}//end while
tableData[r+1] = NULL;//null terminated array
for (a=0; a<r; a++){
printf("\n");
printf(*tableData[a]); <--Displays 20 elements all of id 20?
}
outputFile=insertTableData(outputFile, dataMarker, fieldMarker, tableData);
最佳答案
您应该创建一些实际编译和重现问题的东西。它不仅会帮助人们帮助您,而且这样做您很可能会自己发现问题。
在您的代码摘录中我们不知道:
- rc 是什么,它的值是如何设置的,或者它的值将如何改变并因此终止循环
- r的初始值是多少
- myData 的实际内容是什么
我根据您发布的内容创建了这段代码,它从两个循环中产生相同的输出。因此,要么我遗漏了您发布的内容,要么您遗漏了一些重要内容。
int main( int argc, char** argv ) {
#define STRING char *
STRING dummy = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()";
STRING *tableData[500]={0};
STRING myData[500][2];
int r=0;
while(r < 20){
myData[r][0] = dummy+2*r;
myData[r][1] = dummy+r;
tableData[r] = myData[r];
printf(*tableData[r]);
printf("\n");
r=r+1;
}//end while
int a;
for (a=0; a<r; a++){
printf(*tableData[a]);
printf("\n");
}
}
关于c++ - 用分配的最后一个值覆盖数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/418887/