1

printfで印刷すると、異なる値が得られます。私はこの問題を解決するために多くのことを試みました。しかし、これを解決する方法がわかりませんでした- ここに数行のコードがあります-

#Dymically allocated memory-
 char **child = (char **)malloc(totalRows * sizeof(*child));

 int i=0;
 while ((row = mysql_fetch_row(res)) != NULL)
        {
                child[i] = (char *)malloc(strlen(row[1]) + 1);
                child[i]=strdup(row[1]);
                printf("%u %s \n",  &child[i], child[i]);
                i++;
       }

int j=0;
for (j; j<i; j++)
     printf("%u %s \n",  &child[j], child[j]);

出力は

7127200 1111 
7127208 111111vv 
7127216 111111sd 
7127224 111111en 
7127232 111113nk 
7127240 111113t3 

7127200 1111 
7127208 1111      //..Here I am getting different value- 
7127216 111111sd 
7127224 111111en 
7127232 111113nk 
7127240 111113t3
4

1 に答える 1

0

i would try few things here:

bzero child

remove child[i] = (char *)malloc(strlen(row[1]) + 1); //as you are already allocated memory using strdup

free child[i]

char *child = (char *)malloc(totalRows * sizeof(char *)); // child is a pointer to an array of char * pointer

Let me know if this works for you

于 2013-10-16T22:10:18.337 に答える