main 関数でprintfmyarray[x]
を実行すると、データが表示されない (空白行が表示される) のはなぜですか? 配列は正しく入力されています (関数で出力すると値が得られます)
これが私のコードです:
int main(void) {
char thisxpath[300];
char thisurl[200];
char** myarray = NULL;
strcpy (thisurl,"http://api.openweathermap.org/data/2.5/weather?q=Pescara&mode=xml&units=metric");
strcpy (thisxpath,"//city/@name | //country | //weather/@value | //temperature/@value | //precipitation/@value | //humidity/@value | //speed/@*[name()='name' or name()='value']");
xmlretrive (thisurl, thisxpath, &myarray);
printf("%s\n", myarray[1]);
free(myarray);
return 0;
}
void xmlretrive(char* myurl, char* myxpath, char** myarray) {
//code that retrieve with cURL the XML and other stuff
//keyword contain data, that are copied into myarray
myarray = malloc(20 * sizeof(char*));
for (i=0; i < nodeset->nodeNr; i++) {
keyword = xmlNodeListGetString(doc, nodeset->nodeTab[i]->xmlChildrenNode, 1);
myarray[i] = malloc((100) * sizeof(char));
strcpy(myarray[i], keyword);
// if I printf("%s\n", myarray[i]) here I can see that array is actually filled
xmlFree(keyword);
}