Probleme d'allocation dynamique en c
gregoiredys
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
gregoiredys Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
gregoiredys Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai créer une fonction qui ajoute une ligne a la suite d'un autre dans un fichier.
J'émerai que le tableau de chaine ligne soi allouer dynamiquement.
J'ai déjà tenté le cous mais mon code devenais incompréhensible donc je préfaire montrer celui si :
j'ai créer une fonction qui ajoute une ligne a la suite d'un autre dans un fichier.
J'émerai que le tableau de chaine ligne soi allouer dynamiquement.
J'ai déjà tenté le cous mais mon code devenais incompréhensible donc je préfaire montrer celui si :
void ajouter_ligne_fichier(FILE *fichier2, char *ligne_a_rechercher, char *ligne_a_coller_a_la_suite_de_ligne_a_rechercher) { char chaine[100000] = ""; char sautligne[10000] = "\n"; char *ligne[10000];// tableau de chaine pour acceuillir tout les lignes du fichier plus les nouvelle qu'on ajoute long i2= 0; strcat(ligne_a_coller_a_la_suite_de_ligne_a_rechercher ,sautligne); // On concatène chaine2 dans chaine1 if (fichier2 != NULL) { while (fgets(chaine, 100000, fichier2) != NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL) { if (strcmp(chaine, ligne_a_rechercher) == 0) // Si la ligne a rechedcher correspond a la ligne actuel du fichier { ligne[i2]=strdup(chaine);// on ajoute la ligne du fichier dans ligne i2++;// on ajoute aussi a la suite la nouvelle migne qu'on souhaitre introduire ligne[i2]=strdup(ligne_a_coller_a_la_suite_de_ligne_a_rechercher); } else { ligne[i2]=strdup(chaine);// on ajoute juste la ligne du fichier dans ligne } i2++; } fclose(fichier2); } // pour évitter d'avoir a créer un fichier tempon je redéclare le même fichier sous un autre nom FILE* fichier3 =NULL; fichier3 = fopen("codesource.txt","w"); // on remplasse tout le contenu du fichier par ligne if (fichier3 != NULL) { long i=0; while (i!=i2) { fseek(fichier3, 0, SEEK_END); // On l'écrit dans le fichier fprintf(fichier3, "%s", ligne[i]); i++; } fclose(fichier3); } }
A voir également:
- Probleme d'allocation dynamique en c
- Tableau croisé dynamique - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Liste déroulante dynamique excel - Guide
- Liste déroulante dynamique en cascade excel - Guide
- Sommaire dynamique word - Guide
2 réponses
Bonjour,
Pour allouer dynamiquement de la mémoire à une variable, tu dois utiliser l'instruction malloc.
prototype:
<pointeur> = (<type *>)malloc(<nombre_element > * sizeof(<type> ))
Attention, chaque type prend différemment de l'espace dans la mémoire... ainsi un char prend un octet donc imaginons qu'on veuille faire un tableau de 10 entiers, cela donne:
char * var1;
var1 = (char *)malloc(10 * sizeof(char));
En statique, c'est équivalent à : char var1[10];
"Trotti Trotta, Monsieur P, il y a des anges qui veulent un bisou..."
"Même les joujou de Monsieur P ont besoin de joujou"
Pour allouer dynamiquement de la mémoire à une variable, tu dois utiliser l'instruction malloc.
prototype:
<pointeur> = (<type *>)malloc(<nombre_element > * sizeof(<type> ))
Attention, chaque type prend différemment de l'espace dans la mémoire... ainsi un char prend un octet donc imaginons qu'on veuille faire un tableau de 10 entiers, cela donne:
char * var1;
var1 = (char *)malloc(10 * sizeof(char));
En statique, c'est équivalent à : char var1[10];
"Trotti Trotta, Monsieur P, il y a des anges qui veulent un bisou..."
"Même les joujou de Monsieur P ont besoin de joujou"
Sa serai possible qu'on corrige directement le code ma fonction ?
j'ai déjà lus des chose sur l'allocation dynamique mais je mélange tout a la rigueur quant ses juste avec des chiffre j'y arrive.
Mais la j'utilise un tableau de chaine et j'utilise déjà une boucle,dans la plus par des tuto sur l'allocation dynamique on utilise une boucle avec un i alors que mon tableau utilise déjà un autre i et une boucle qui ne sont pas destiner à l'allocation.
J'ai déjà tenté le cou plusieurs fois de modifier ma fonction mais a chaque fois je mélange tout.
Si vous insisté je peut montrer le code d'une des mes nombreuse tentative mais sa devient incompréhensible.
j'ai déjà lus des chose sur l'allocation dynamique mais je mélange tout a la rigueur quant ses juste avec des chiffre j'y arrive.
Mais la j'utilise un tableau de chaine et j'utilise déjà une boucle,dans la plus par des tuto sur l'allocation dynamique on utilise une boucle avec un i alors que mon tableau utilise déjà un autre i et une boucle qui ne sont pas destiner à l'allocation.
J'ai déjà tenté le cou plusieurs fois de modifier ma fonction mais a chaque fois je mélange tout.
Si vous insisté je peut montrer le code d'une des mes nombreuse tentative mais sa devient incompréhensible.