char * mstrndup(const char *str, size_t n) { char *ret = malloc((n+1) * sizeof(char)); if (!ret) exit(0); strncpy(ret, str, n); /* Copie n caractère de str dans n */ ret[n] = 0; /* 0 == '\0' */ return ret; } /** Teste le retour de realloc et quitte le programme si besoin */ void * xrealloc(void * prec, size_t len) { void *ret = realloc(prec, len); if(!ret) /* Equivaut à if(ret == NULL) */ exit(0); return ret; } // le chargement de tableau char ** load_tab(CONCEPT* _concepts) { REF* ref=NULL; int i,retsize = 0,p; char **ret = NULL,result[1024]; for (p=0; p <_countCpt; p++) { ref = _concepts[p].intent; if (_concepts[p].extent && ref) { //strcpy(result,"\0"); result[0]='\0'; while (ref) { if (ref->reference) { //if(strcmp(result,"\0")) if(result[0]!='\0') strcat(result," "); strcat(result,ref->reference); ref = ref->next; } } printf("la chaine:::%s\n",result); ret = xrealloc(ret, (++retsize) * sizeof(char*)); /* On alloue une case de plus au tableau de string, puis on ajoute la chaine à la fin du tableau */ ret[retsize-1] = mstrndup(result, strlen(result));// ? strl-1 } } ret = xrealloc(ret, (++retsize) * sizeof(char*)); /* On ajoute un dernier pointeur sur NULL pour savoir quand le tableau se termine */ ret[retsize-1] = NULL; return ret; } int main() { char **rets = NULL; lire_fichier("lattice1.lat.xml"); rets = load_tab( _concepts); cleanup(); return 0; }
pas compris la question.
tu ne mets plus cette partie ???
<Extent> <Object_Ref>40787</Object_Ref> <Object_Ref>14756</Object_Ref> <Object_Ref>4771</Object_Ref> <Object_Ref>4826</Object_Ref> </Extent> a b cc
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionchar * mstrndup(const char *str, size_t n) { char *ret = malloc((n+1) * sizeof(char)); if (!ret) exit(0); strncpy(ret, str, n); /* Copie n caractère de str dans n */ ret[n] = 0; /* 0 == '\0' */ return ret; } /** Teste le retour de realloc et quitte le programme si besoin */ void * xrealloc(void * prec, size_t len) { void *ret = realloc(prec, len); if(!ret) /* Equivaut à if(ret == NULL) */ exit(0); return ret; } // le chargement de tableau char ** load_tab(CONCEPT* _concepts) { REF* ref=NULL; int i,retsize = 0,p; char **ret = NULL,result[1024]; for (p=0; p <_countCpt; p++) { ref = _concepts[p].intent; if (_concepts[p].extent && ref) { //strcpy(result,"\0"); result[0]='\0'; while (ref) { if (ref->reference) { //if(strcmp(result,"\0")) if(result[0]!='\0') strcat(result," "); strcat(result,ref->reference); ref = ref->next; } } printf("la chaine:::%s\n",result); ret = xrealloc(ret, (++retsize) * sizeof(char*)); /* On alloue une case de plus au tableau de string, puis on ajoute la chaine à la fin du tableau */ ret[retsize-1] = mstrndup(result, strlen(result));// ? strl-1 } } ret = xrealloc(ret, (++retsize) * sizeof(char*)); /* On ajoute un dernier pointeur sur NULL pour savoir quand le tableau se termine */ ret[retsize-1] = NULL; return ret; } int main() { char **rets = NULL; lire_fichier("lattice1.lat.xml"); rets = load_tab( _concepts); cleanup(); return 0; }
prenom nom
nom age
nom prenom age
nom emploi
age emploi
prenom age emploi
nom age emploi
nom prenom emploi
nom prenom age emploi
nom
prenom
age
emploi
age nom
nom age prenom
nom emploi
age emploi
nom prenom emploi
prenom age emploi
nom age emploi
nom prenom age emploi
char ***rets = NULL; rets = malloc (nbre * sizeof(char**)); rets[0] = compare_files(tab_comb,nb_comb,tab_con,nb_con);
/** Compare deux fichiers er renvoie le résultat de la comparaison */ char ** compare_files(char **tab_comb,int nb_comb,char ***tab_con,int nb_con) { int i,a, retsize = 0,index,p; char **ret = NULL,result[1024]; int size1; for(i=0;i<nb_comb;i++) { a = 0; for (p=0; p <nb_con; p++) { if (is_same(tab_comb[i], tab_con[0][p], 0)) { a = 1; break; } } if (!a) { ret = xrealloc(ret, (++retsize) * sizeof(char*)); /* On alloue une case de plus au tableau de string, puis on ajoute la chaine à la fin du tableau */ ret[retsize-1] = mstrndup(tab_comb[i], strlen(tab_comb[i])); } } ret = xrealloc(ret, (++retsize) * sizeof(char*)); /* On ajoute un dernier pointeur sur NULL pour savoir quand le tableau se termine */ ret[retsize-1] = NULL; return ret; }