URL: https://linuxfr.org/forums/programmation-c--2/posts/tableau-dynamique-de-pointeur-vers-char Title: Tableau dynamique de pointeur vers char Authors: arnohoho Date: 2006年04月07日T15:09:12+02:00 Tags: Score: 0 Voila mon probleme j'ai un tableau de ce type : char *message[1]; et je voudrai que ça taille augmente dynamiquement au fûr et à mesure que je trouve des nouveau mot dans le fichier texte que je parcours. Pour stocker un nouveau pointeur vers une chaine. j'ai essayé ça mais il prend pas : message = realloc(message, (count + 1) * sizeof(char *)); Il doit y avoir quelque chose que j'ai pas compris je vous met aussi le code en entier, plz soyez cool niveau critique c'est mon 1er prog en C. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main(void) { £spaces£ £/spaces£/* Ouverture du fichier de configuration pour y récupérer la liste de processus */ £spaces£ £/spaces£FILE *fp; £spaces£ £/spaces£if ((fp = fopen("proc_liste.conf", "r")) == NULL) £spaces£ £/spaces£{ £spaces£ £/spaces£fprintf(stderr, "\nErreur à l'ouverture du fichier"); £spaces£ £/spaces£exit(1); £spaces£ £/spaces£} £spaces£ £/spaces£/* Lecture du contenu du fichier caractère par caractère et stockage en mémoire du fichier */ £spaces£ £/spaces£char now[2] = "a"; £spaces£ £/spaces£char prec = '0円'; £spaces£ £/spaces£char *message[1]; £spaces£ £/spaces£int count = -1; £spaces£ £/spaces£while ((now[0] = fgetc(fp)) != EOF) £spaces£ £/spaces£{ £spaces£ £/spaces£/* Vérifie si c'est un nouveau mot pour stocker, sinon complete le mot avec la nouvelle lettre */ £spaces£ £/spaces£if (isalnum(now[0]) != 0 && isalnum(prec) == 0) £spaces£ £/spaces£{ £spaces£ £/spaces£count++; £spaces£ £/spaces£if (count > 0) £spaces£ £/spaces£message = realloc(message, (count + 1) * sizeof(char *)); £spaces£ £/spaces£message[count] = malloc(sizeof(char) * 2); £spaces£ £/spaces£strcat (message[count], now); £spaces£ £/spaces£} £spaces£ £/spaces£else if (isalnum(now[0]) != 0 && isalnum(prec) != 0) £spaces£ £/spaces£{ £spaces£ £/spaces£message[count] = realloc(message[count], (strlen(message[count]) + strlen(now) + 1)); £spaces£ £/spaces£strcat (message[count], now); £spaces£ £/spaces£} £spaces£ £/spaces£prec = now[0]; £spaces£ £/spaces£} £spaces£ £/spaces£/* affichage du fichier maintenant contenu en mémoire */ £spaces£ £/spaces£int e; £spaces£ £/spaces£for (e = 1; e <= count; e++) £spaces£ £/spaces£puts(message[e]); £spaces£ £/spaces£/* liberer la mémoire utilisée */ £spaces£ £/spaces£int i; £spaces£ £/spaces£for (i = 0; i <= count; i++) £spaces£ £/spaces£free(message[i]); £spaces£ £/spaces£return(0); }

AltStyle によって変換されたページ (->オリジナル) /