我目前正在做一个 C 项目,但在使用 2D 数组时遇到了问题。在我开始之前,我对 C 很陌生,所以如果这是一个直截了当的问题,请原谅我。
我想要做的是初始化一个数组,并将它传递给一个函数来检索结果。完成后,原始函数可以循环遍历数组。
该数组包含 50 行,每行 2 个元素。
下面是我如何初始化数组和调用函数。
char* array[][2] = {0};
int result = loadArray(&HandleDB, &array);
下面是 loadArray 的函数
int loadArray(MYSQL *HandleDB, char *array[][2])
{
int sqlLen = 0;
char *sql;
MYSQL_RES *resultReport;
MYSQL_ROW rowReport;
sqlLen = asprintf(&sql, "SELECT * FROM TblLookups");
SL_DebugAll(DBG_ALWAYS, sql);
if ((mysql_real_query(HandleDB, sql, sqlLen)))
{
printf("MySQL Error: %s\n", mysql_error(HandleDB));
return 1;
}
resultReport = mysql_use_result(HandleDB);
int i = 0;
while ((rowReport = mysql_fetch_row(resultReport)))
{
array[i][0] = rowReport[0];
array[i][1] = rowReport[1];
printf("%s:%s\n", array[i][0], array[i][1]);
i++;
}
printf("***\n\n");
for (i = 0; i < 50; i++)
{
printf("%s:%s\n", array[i][0], array[i][1]);
}
return 0;
}
现在我遇到的问题是在 while 循环错误后打印出数组的内容,但在 while 循环内是正确的。
例如,在 while 循环中,它从 MySQL 结果中获取值,然后打印它存储在数组中的内容,我得到以下输出:
colA1:colB1
colA2:colB2
colA3:colB3
然后当我在 for 循环中循环相同的数组时,我得到以下
:colB1
:colA1
:colB2
:colA3
:colB3
:colA2
我不明白为什么这在 for 循环中不起作用,但在 printf 语句是访问同一数组的相同代码时却在 while 循环中。
感谢您的任何帮助,您可以提供。