Quand récupérer une information de ma firebase database fetch_row(result)
je veux sélectionner parmi ces résultats et les stocker dans une row[i]
tableau dynamic row[i]
sera l’info nécessaire
Je vais avoir besoin de le stocker pour tagid[sortinggger]
mais char * peut être stocké dans char
donc ce que je maintenant est tagid[sortinggger] = *row[i];
mais quand je vérifie les résultats … c’est pas ce que je veux, le numéro 358713020035990 doit être en tagid …
row[i] 0x05df2090 "358713020035990" char * tagid[i] -112 '' char
Comment puis-je obtenir ce droit?
char *tagid;int sortinggger; tagid = (char *) malloc(sizeof(char)); result = mysql_store_result(conn); // only one column of integers num_rows = mysql_num_rows(result); while (row = mysql_fetch_row(result)) {tagid[sortinggger] = *row[i];}
Si vous essayez de copier un tampon de données de chaîne, et pas seulement le pointeur sur ce tampon, vous devrez utiliser une opération de copie en mémoire ou de préférence une fonction de bibliothèque standard strcpy
à des fins telles que strcpy
ou strncpy
. Donc, en supposant que tagid[sortinggger]
fait référence à un bloc de mémoire qui est un tableau de type char
, vous pouvez procéder comme suit:
#include //tagid is a two-dimensional array of chars of ROWSIZE x COLUMNSIZE char** tagid; tagid = malloc(sizeof(char*) * COLUMNSIZE); for (int i=0; i < COLUMNSIZE; i++) { tagid[i] = malloc(sizeof(char) * ROWSIZE); } //copy some data into your array at row index "trigger" int trigger = SOMEVALUE; strncpy(tagid[trigger], row[i], ROWSIZE); //free the memory you've allocated for your two dimensional array for (int i=0; i < COLUMNSIZE; i++) { free(tagid[i]); } free(tagid);
La valeur de ROWSIZE devra être suffisamment grande pour contenir votre plus grande chaîne plus un NULL strncpy
, sinon la copie sera tronquée à l'aide de strncpy
ou les données déborderont des limites du tableau et strncpy
quelque chose que vous ne voudriez pas si vous utilisez strcpy
.