begin process at 2012 05 28 07:19:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

allocaiton dynamique: expliquez moi :)


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

allocaiton dynamique: expliquez moi :)

samedi 13 décembre 2003 à 20:23:47 | allocaiton dynamique: expliquez moi :)

warenbe

Membre Club
bon je souhaite comprendre l'allocation dynamique en C et je bute dessus depuis une bonne heure deja alors que je suis sur que c'est super simple

donc j'ai essaye de faire un bout de code qui lit 10 mots les uns a la suite des autres et les ajoute dans un tableau afin de former une phrase.

donc le voila:




#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i;
char Phrase[100];
char *Tab[10];
/* declaration des variables. i sera utilise pour
les for comme compteur
Phrase sera utilisé pour stoquer le mot et Tab[] pour
stocker les 10 mots a la suite */


for (i=0;i<10;i++)
{
Tab[i] =(char *)malloc(10*sizeof(int));
if (Tab==NULL)
{
printf("Impossible d'allouer la memoire!");
exit(0);
}

/* allocation de memoire*/

printf("Entrez un mot :");
scanf("%s", Phrase);
Tab[i]=Phrase;
/* ajout du mot a la suite de Tab */
}


printf("\nLa phrase obtenue est :\n");

for (i=0;i<10;i++)
{
printf("%s",Tab[i]);
}
/* affichage des 10 mots a la suite stocké dans Tab[] */

return 0;
}



et ce code donne au final 10 fois le meme mot (le dernier tapé)

pourriez vous m'aider en corrigeant ce code de maniere a ce que ça marche ou meme en m'expliquand clairement l'allocation dynamique des tableau? (avec un exemple simple ;) )

merci d'avance!
waren be
samedi 13 décembre 2003 à 20:38:50 | Re : allocaiton dynamique: expliquez moi :)

BruNews

Administrateur CodeS-SourceS
for (i=0;i<10;i++)
{
Tab[i] =(char *)malloc(10*sizeof(int));
10*sizeof(int)); ????????? c'est pas des espaces de stockage pour tes phrases plutot ?
if(Tab==NULL) ???? dans la boucle serait:
if(Tab[i]==NULL)

Lit la prase d'abord et alloue a chaque index strlen(phrase)+1 et recopie sur ce pointeur phrase
strcpy(Tab[i], phrase);
BruNews, ciao...
samedi 13 décembre 2003 à 22:46:30 | Re : allocaiton dynamique: expliquez moi :)

warenbe

Membre Club
ok alors apres correction:




#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
int i;
char Phrase[100];
char *Tab[10];
/* declaration des variables. i sera utilise pour
les for comme compteur
Phrase sera utilisé pour stoquer le mot et Tab[] pour
stocker les 10 mots a la suite */


for (i=0;i<10;i++)
{

printf("Entrez un mot :");
scanf("%s", Phrase);

Tab[i] =(char *)malloc(10*sizeof(char));
if (Tab[i]==NULL)
{
printf("Impossible d'allouer la memoire!");
exit(0);
}

/* allocation de memoire*/

strcpy(Tab[i], Phrase);
/* ajout du mot a la suite de Tab */
}


printf("\nLa phrase obtenue est :\n");

for (i=0;i<10;i++)
{
printf("%s",Tab[i]);
}
/* affichage des 10 mots a la suite stocké dans Tab[] */

return 0;
}




on testouille... NICKEL!
t'es un dieu ;)
merci pour tout
comme ça j'ai tout pigé ;)
me reste plus qu'a inserer une espace entre les mots et c'est gagné! mais ça c'est pas un probleme

merci ;)
samedi 13 décembre 2003 à 22:58:30 | Re : allocaiton dynamique: expliquez moi :)

BruNews

Administrateur CodeS-SourceS
NENNI:
Tab[i] =(char *)malloc(strlen(phrase)+1);

10*sizeof(char) risque fort de ne pas suffire pour le strcpy qui suit et qui va tout ecraser.
BruNews, ciao...
samedi 13 décembre 2003 à 23:10:32 | Re : allocaiton dynamique: expliquez moi :)

warenbe

Membre Club
ok
pour les exemples que j'ai fais ça marchait sans probleme mais bon... mieux vaut ne pas tenter le diable
samedi 13 décembre 2003 à 23:14:46 | Re : allocaiton dynamique: expliquez moi :)

BruNews

Administrateur CodeS-SourceS
Et prends par habitude que pour tout malloc doit y avoir le free correspondant. Ajoute la boucle de desallocation.
BruNews, ciao...
samedi 13 décembre 2003 à 23:18:59 | Re : allocaiton dynamique: expliquez moi :)

warenbe

Membre Club
ok free(Tab[i]); :)

merci pour tout!


Cette discussion est classée dans : dynamique, code, tab, suite, phrase


Répondre à ce message

Sujets en rapport avec ce message

Tableau suite... [ par Niníel ] Alors voila ma 2ème question de la journée :-PJ'ai un tableau de caractères 64 position: char Tab[64], un compteur: int inCompter et un tableau de 1 p Prob de modulo ou de code ? [ par NeoZ ] Salut, je voudrais stocker un nombre dans un tableau, ou tout du moins, stocker chaque chiffre dans une variable, et j'ai fait ce bout de code, mais i fonction d'alloaction dynamique [ par tomsawyerbelgique ] Pour une allocation dynamique d'un tableau à deux dimensions. Comme celle ci:cout // Initalisation int** tab = new int*[p_size1_tab]; for(in Nom de fichier de sortie dynamique [ par saturne_1606 ] Bonjours a tous!Voila ma fonction :void creer_carnet_vide( ){ string nom_carnet; cout cin >&gt demande de code source [ par rose_rosa ] j'ai besoin d'un program qui support la declaration d'un entier et qui compile des  expressions arithmetiques plus la phrase while et la phrase if . m Pb avec graphe en C++ [ par gargourifahmi ] Salut à tous,Je suis en train d'implémenter un graphe basé sur les listes d'adjacence.En première étape, j'ai essayé d'initialiser le tableau de point 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 Parsage tableau [ par JAYDEN ] Bonjour,Désolé de vous déranger mais dans le cadre d'un projet j'ai besoin a un moment donner de parser une suite de binaire et de les stocker dans un Fonction While multiple [ par oshin ] Salut tout le monde,J'ai un problème tout bête..Dans mon programme j'ai inclus une fonction "While(1)" donc infini.. le probleme c'est que lorsque le


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