begin process at 2012 05 30 18:11:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Tableaux - Gestion dynamique de la mémoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tableaux - Gestion dynamique de la mémoire

dimanche 4 avril 2010 à 15:27:01 | Tableaux - Gestion dynamique de la mémoire

Smanyx


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 un boucle, la taille du tableau n'est pas connu 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 C/C++ :
#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;
}


mardi 6 avril 2010 à 13:28:51 | Re : Tableaux - Gestion dynamique de la mémoire

Pistol_Pete

Salut
Regarde du coté de la stl avec les vector:
tu feras quelque chose comme cela:
vector<char>Noms;
Noms.push_back("monNom");

et tu y accèdes comme ceci:
for (int n = 0; n<i; n++)
{
printf ("%s ",Noms[n]);
}

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
mardi 6 avril 2010 à 15:24:27 | Re : Tableaux - Gestion dynamique de la mémoire

Smanyx

Merci Pistol_Pete, mais je crois que les vectors machins c'est du C++.
Je dois coder en langage C uniquement. Nouvelles suggestions!?



vendredi 9 avril 2010 à 21:36:28 | Re : Tableaux - Gestion dynamique de la mémoire

rt15

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

Heu... Je vois une vague logique dans ton code, par contre je ne comprends pas grand chose à tes tailles d'allocation notamment. Par exemple le premier malloc qui alloue un caractère, j'ai du mal. Et la déclaration du tableau me paraît aussi plutôt originale.

A part ça, il est souvent conseillé de coder tout en anglais (Par exemple pour ne pas avoir de problème d'accents). Et perso je préfère indenter à coup de deux espaces. Les tabs ça supporte mal les passages d'un éditeur à l'autre.

Et les déclarations dans les boucles (for int...), c'est du C avancé, ça passe pas sur les vieux compilos. Ce genre de truc peut être intéressant en C++ (Appel de constructeur que sous certaines conditions), mais en C ça n'a aucun intérêt.

Et aussi le getchar n'a pas lieu d'être dans un vraie appli console. Si toutes les applis consoles avait une pause à la fin ce serait horrible et inutilisable. Si c'est à cause de ton environnement de dev, tu peux par exemple mettre un point d'arrêt sur le return 0;.

Quelque chose comme ça :

Code C/C++ :
#include <stdio.h>

typedef char NAME[25];

int main ()
{
  NAME* lpNames;
  int nNamesCount;
  int nI;

  nNamesCount = 0;

  lpNames = (NAME*)malloc(1 * sizeof(NAME));

  puts("\nPour terminer, tapez EOF (Ctrl + Z) ");
  while (1)
  {
    printf("\nVeuillez entrer un nom svp: ");
    gets(lpNames[nNamesCount]);
    if (feof(stdin)) break;
    nNamesCount++;
    lpNames = (NAME*)realloc(lpNames, (nNamesCount + 1) * sizeof(NAME));
  }

  printf ("Liste de noms saisis: ");
  for (nI = 0; nI < nNamesCount; nI++) 
  {
    printf ("%s ", lpNames[nI]);
  }

  free(lpNames);

  return 0;
}
vendredi 9 avril 2010 à 21:40:59 | Re : Tableaux - Gestion dynamique de la mémoire

rt15

Membre Club Administrateur CodeS-SourceS
Arf, j'ai oublié l'include de stdlib pour malloc/realloc/free.
mercredi 14 avril 2010 à 05:46:13 | Re : Tableaux - Gestion dynamique de la mémoire

Smanyx


Merci beaucoup, rt15, surtout pour les petites remarques/ observations toujours aussi pertinantes et qui sont très utiles surtout pour des gens comme moi qui se forment et apprennent l'essentiel sur l'Internet.

Smanyx.


Cette discussion est classée dans : code, int, printf, noms, char


Répondre à ce message

Sujets en rapport avec ce message

concatenation [ par asmv ] //a partir d'elements de tableau 'int' transformes en 'char'//essai de concatenation qui ne fonctionne pas pourquoi ?//merci pour votre aide#include # "désallocation" inopinée [ par vecchio56 ] J'ai touvé un truc bizarre avec Visual C++ 6: le code suivant plante:#include void f(char* a){ a = new char[100]; // alloue de la Hachage fermé problème de lecture [ par mcflysupersonic ] Bonjour je suis nouveau sur le forum est ceci est ma première question donc j'espère que je ne me suis pas trompé d'endroit pour poster.Voilà j'ai un segmentation fault help [ par alabb ] aidez moi je suis un new bie, j'ai un segmentation fault a la fin du prog:si gagant apres avoir affiché WINNERsi perdant apres avoir affiché "votre s problème de char [ par minet03 ] Coucoutout le monde, tout d'abord voilà mon code :#include #include #include #include #include #include char *bin_dec(char *binai problème de char [ par minet03 ] Bonjour c'est encore le débutant, voilà le code :#include #include #include char inverser_char(char variable[]){ int longueur = strlen(variable); // l longip ... probleme [ par winwarrior ] Salut :)Voila j'ai un petit probleme avec un code qui est censé me renvoyer le longip, il me retourne -795585024 au lieu de 2130772483 (longip de 127. SOS manque d'inspiration [ par graall ] J'ai besoin de faire un petit programme (en mode console) qui demande à l'utilisateur de saisir le nom d'un fichier et ensuite, qui vérifie si ce fich oh non!! [ par bako25 ] Le prog suivant  calcule le nombre des 'e' dans un paragraphe: #include #include< Demande d'explication a propos d'un code. [ par Strick9 ] Salut à tous, j'ai obtenu grâce à se merveilleux site ce code sources pour cet énoncés:un programme permettant de donner toute les combinaison suite a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales