IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Gestion dynamique de la mémoire - Tableaux


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Gestion dynamique de la mémoire - Tableaux
    Salut !

    Je voudrais écrire un programme qui accepte des noms saisis au clavier et les amasse dans un tableau. Comme les noms sont entrés dans une boucle, la taille du tableau n'est pas connue en avance et doit donc être gérée dynamiquement.

    voici le code que j'ai à l' instant et qui ne tourne pas. Votre aide est vraiment la bienvenue.
    Merci.

    Smanyx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <stdio.h>
    #include <stdlib.h>
     
    int main ()
    {
    	int i = 0;
    	char Noms[][25];
     
    	puts("\nPour terminer, tapez EOF (Ctrl + Z) ");
                 Noms = (char *) malloc(1 * sizeof(char));
    	do
    	{
    		printf("\nVeuillez entrer un nom svp: ");
    		gets(Noms[i]);
    		i++;
    		Noms = (char *) realloc (Noms, i * sizeof (char));
    		printf("\nVeuillez entrer un nom svp: ");
    	}while(!feof(stdin));
     
    	printf ("Liste de noms saisis: ");
        for (int n = 0; n<i; n++) 
    	{
    		printf ("%s ",Noms[n]);
    	}
        free (Noms);
     
    	getchar();
    	return 0;
    }

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Il faut que Noms soit un pointeur, qui recevra l'adresse d'un tableau que tu vas créer (et agrandir, etc.), et non un tableau figé. D'ailleurs, même si Noms devait être un tableau figé, ta déclaration est incorrecte car tu ne l'initialises pas. La bonne déclaration est :
    Pour le malloc, c'est malloc(... * sizeof(char [25])) et non sizeof(char). Et on n'a pas besoin de caster malloc.

    Pareil pour realloc.

    On peut aussi faire d'autres remarques sur ton code mais essaie déjà d'arranger (et de comprendre) ça.

Discussions similaires

  1. système de gestion dynamique de la mémoire centrale
    Par naou18 dans le forum Débuter
    Réponses: 2
    Dernier message: 14/05/2012, 06h19
  2. [debutant nul] libération mémoire tableaux dynamiques
    Par hibiscuit dans le forum Débuter
    Réponses: 11
    Dernier message: 11/09/2007, 14h46
  3. [Tableaux] gestion dynamique de la mémoire en PHP
    Par isorn dans le forum Langage
    Réponses: 1
    Dernier message: 02/04/2007, 16h02
  4. Réponses: 3
    Dernier message: 24/02/2006, 13h27
  5. Réponses: 24
    Dernier message: 30/10/2005, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo