Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Déclaration dynamique d'un tableau de chaines de caracteres [ Archives / Au secours ] (paulien)

dimanche 18 mai 2003 à 05:14:44 | Déclaration dynamique d'un tableau de chaines de caracteres

paulien

Bonjour à tous !
J'essaie de déclarer un tableau de chaines de caractéres dynmiquement, j'ai essayé cette methode, ca ne fonctionne pas, la compilation marche, mais au run time, il y'a une erreur du genre : la memoire ne peut pas etre 'read' ! comme dirais mon prof d'info ! lol

char** Tableau = new char* [SIZE];

Je ne vois absoluement pas l'erreur que j'ai faite, enfin, c les joies de la programmation !!!!

Paulien - La Rochelle - BTS IRIS
http://www.iris2004.fr.st

dimanche 18 mai 2003 à 09:00:10 | Re : Déclaration dynamique d'un tableau de chaines de caracteres

BruNews

Administrateur CodeS-SourceS
Classique, tu as un tableau de POINTEURS, faut ensuite allouer pour chacun la memoire.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Bonjour à tous !
> J'essaie de déclarer un tableau de chaines de caractéres dynmiquement, j'ai essayé cette methode, ca ne fonctionne pas, la compilation marche, mais au run time, il y'a une erreur du genre : la memoire ne peut pas etre 'read' ! comme dirais mon prof d'info ! lol
>
> char** Tableau = new char* [SIZE];
>
> Je ne vois absoluement pas l'erreur que j'ai faite, enfin, c les joies de la programmation !!!!
>
> Paulien - La Rochelle - BTS IRIS
> http://www.iris2004.fr.st

dimanche 18 mai 2003 à 10:37:15 | Re : Déclaration dynamique d'un tableau de chaines de caracteres

bouba

Entre Rochelais j'aimerais bien t'aider mais la je ne pige pas le blem.
Ce que BruNews t'a répondu ne me semble pas correcte du tout, on peut tout à fait faire comme tu as fais sans allouer à chaque espace mémoire une valeur. C'est bien d'ailleur l'interêt de cette méthode. Dis moi quel est ton compilateur ? Sous quel environnement tu programme ? et enfin quel est la taille de ton SIZE ?
A+.
Bouba


-------------------------------
Réponse au message :
-------------------------------

> Bonjour à tous !
> J'essaie de déclarer un tableau de chaines de caractéres dynmiquement, j'ai essayé cette methode, ca ne fonctionne pas, la compilation marche, mais au run time, il y'a une erreur du genre : la memoire ne peut pas etre 'read' ! comme dirais mon prof d'info ! lol
>
> char** Tableau = new char* [SIZE];
>
> Je ne vois absoluement pas l'erreur que j'ai faite, enfin, c les joies de la programmation !!!!
>
> Paulien - La Rochelle - BTS IRIS
> http://www.iris2004.fr.st

dimanche 18 mai 2003 à 11:03:40 | Re : Déclaration dynamique d'un tableau de chaines de caracteres

BruNews

Administrateur CodeS-SourceS
salut bouba, comment pas correct ???
Il dit bien "TABLEAU de chaines", si c'est le cas ou sont les tableaux char que chaque ptr va referencer ?
A moins qu'il n'ait calculer SIZE en rapport ...
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Entre Rochelais j'aimerais bien t'aider mais la je ne pige pas le blem.
> Ce que BruNews t'a répondu ne me semble pas correcte du tout, on peut tout à fait faire comme tu as fais sans allouer à chaque espace mémoire une valeur. C'est bien d'ailleur l'interêt de cette méthode. Dis moi quel est ton compilateur ? Sous quel environnement tu programme ? et enfin quel est la taille de ton SIZE ?
> A+.
> Bouba
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour à tous !
> > J'essaie de déclarer un tableau de chaines de caractéres dynmiquement, j'ai essayé cette methode, ca ne fonctionne pas, la compilation marche, mais au run time, il y'a une erreur du genre : la memoire ne peut pas etre 'read' ! comme dirais mon prof d'info ! lol
> >
> > char** Tableau = new char* [SIZE];
> >
> > Je ne vois absoluement pas l'erreur que j'ai faite, enfin, c les joies de la programmation !!!!
> >
> > Paulien - La Rochelle - BTS IRIS
> > http://www.iris2004.fr.st
>

dimanche 18 mai 2003 à 11:06:26 | Re : Déclaration dynamique d'un tableau de chaines de caracteres

Kaid

Ce que veux expliquer BruNews et ce qui m'apparait comme la solution du problème:

#define SIZE ...
#define CHAINE1 ...
#define CHAINE2 ...

char** Tableau = new char* [SIZE];

Tableau[0]=new char [strlen(CHAINE1) + 1];
strcpy(Tableau[0], CHAINE1);

Tableau[1]=new char [strlen(CHAINE2) + 1];
strcpy(Tableau[1], CHAINE2);

// Utilisation ...

// Libération de la mémoire
for(int i=0;i<SIZE;i++)
delete [] Tableau[i];

delete [] Tableau;


Kaid - kaid.fr.st

-------------------------------
Réponse au message :
-------------------------------

> Entre Rochelais j'aimerais bien t'aider mais la je ne pige pas le blem.
> Ce que BruNews t'a répondu ne me semble pas correcte du tout, on peut tout à fait faire comme tu as fais sans allouer à chaque espace mémoire une valeur. C'est bien d'ailleur l'interêt de cette méthode. Dis moi quel est ton compilateur ? Sous quel environnement tu programme ? et enfin quel est la taille de ton SIZE ?
> A+.
> Bouba
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour à tous !
> > J'essaie de déclarer un tableau de chaines de caractéres dynmiquement, j'ai essayé cette methode, ca ne fonctionne pas, la compilation marche, mais au run time, il y'a une erreur du genre : la memoire ne peut pas etre 'read' ! comme dirais mon prof d'info ! lol
> >
> > char** Tableau = new char* [SIZE];
> >
> > Je ne vois absoluement pas l'erreur que j'ai faite, enfin, c les joies de la programmation !!!!
> >
> > Paulien - La Rochelle - BTS IRIS
> > http://www.iris2004.fr.st
>

dimanche 18 mai 2003 à 11:25:32 | Re : Déclaration dynamique d'un tableau de chaines de caracteres

BruNews

Administrateur CodeS-SourceS
ben voile, on arrive au meme point, alloc des differents espaces pour chaque string et maintenant oui que va tourner.
et vive La Rochelle.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Ce que veux expliquer BruNews et ce qui m'apparait comme la solution du problème:
>
> #define SIZE ...
> #define CHAINE1 ...
> #define CHAINE2 ...
>
> char** Tableau = new char* [SIZE];
>
> Tableau[0]=new char [strlen(CHAINE1) + 1];
> strcpy(Tableau[0], CHAINE1);
>
> Tableau[1]=new char [strlen(CHAINE2) + 1];
> strcpy(Tableau[1], CHAINE2);
>
> // Utilisation ...
>
> // Libération de la mémoire
> for(int i=0;i<SIZE;i++)
> delete [] Tableau[i];
>
> delete [] Tableau;
>
>
> Kaid - kaid.fr.st
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Entre Rochelais j'aimerais bien t'aider mais la je ne pige pas le blem.
> > Ce que BruNews t'a répondu ne me semble pas correcte du tout, on peut tout à fait faire comme tu as fais sans allouer à chaque espace mémoire une valeur. C'est bien d'ailleur l'interêt de cette méthode. Dis moi quel est ton compilateur ? Sous quel environnement tu programme ? et enfin quel est la taille de ton SIZE ?
> > A+.
> > Bouba
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjour à tous !
> > > J'essaie de déclarer un tableau de chaines de caractéres dynmiquement, j'ai essayé cette methode, ca ne fonctionne pas, la compilation marche, mais au run time, il y'a une erreur du genre : la memoire ne peut pas etre 'read' ! comme dirais mon prof d'info ! lol
> > >
> > > char** Tableau = new char* [SIZE];
> > >
> > > Je ne vois absoluement pas l'erreur que j'ai faite, enfin, c les joies de la programmation !!!!
> > >
> > > Paulien - La Rochelle - BTS IRIS
> > > http://www.iris2004.fr.st
> >
>

dimanche 18 mai 2003 à 11:31:59 | Re : Déclaration dynamique d'un tableau de chaines de caracteres

bouba

Ouai, en y repensant tu as raison, excuse.
A+.
Bouba




-------------------------------
Réponse au message :
-------------------------------

> salut bouba, comment pas correct ???
> Il dit bien "TABLEAU de chaines", si c'est le cas ou sont les tableaux char que chaque ptr va referencer ?
> A moins qu'il n'ait calculer SIZE en rapport ...
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Entre Rochelais j'aimerais bien t'aider mais la je ne pige pas le blem.
> > Ce que BruNews t'a répondu ne me semble pas correcte du tout, on peut tout à fait faire comme tu as fais sans allouer à chaque espace mémoire une valeur. C'est bien d'ailleur l'interêt de cette méthode. Dis moi quel est ton compilateur ? Sous quel environnement tu programme ? et enfin quel est la taille de ton SIZE ?
> > A+.
> > Bouba
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjour à tous !
> > > J'essaie de déclarer un tableau de chaines de caractéres dynmiquement, j'ai essayé cette methode, ca ne fonctionne pas, la compilation marche, mais au run time, il y'a une erreur du genre : la memoire ne peut pas etre 'read' ! comme dirais mon prof d'info ! lol
> > >
> > > char** Tableau = new char* [SIZE];
> > >
> > > Je ne vois absoluement pas l'erreur que j'ai faite, enfin, c les joies de la programmation !!!!
> > >
> > > Paulien - La Rochelle - BTS IRIS
> > > http://www.iris2004.fr.st
> >
>

dimanche 18 mai 2003 à 11:34:14 | Re : Déclaration dynamique d'un tableau de chaines de caracteres

Haldwin

Juste un dernier ajout pour expliquer pourkoi tu avais ce message "memoire ne peut etre lue"...
Ce que tu as fait est un tableau de pointeurs de chaine de char de taille SIZE. Or par defaut le compilateur met dans ces adresses memoires une valeur ( par ex: 0xcdcdcdcd) qui est une adresse memoire non lisible. Voila pourquoi tu as cette erreur... En dynamique, trois choses a faire tout le temps:
1/ Allocation de la memoire utile
2/ Initialisation des valeurs de la memoire à NULL dans le cas de pointeurs. (exactement ton cas)
3/ Ne pas oublier de deallouer proprement sans fuite memoire...
Wala,
Bon dev,
<<-- H@ldwin -->>

dimanche 18 mai 2003 à 19:52:06 | Re : Déclaration dynamique d'un tableau de chaines de caracteres

paulien

Merci a tous de l'aide que vous m'apportez, le probléme est que je ne peux pas definir de constantes, en effet, la taille du tableau doit etre declaree en dynamique, c une variable calculée, et les chaines sont aussi insérées en dynamique dans le tableau (à l'execution et non a la compilation), en fait, je fais un generateur de pages html, qui contiendra un nombre de photos precisé par l'utilisateur, et l'utilisateur entrera lui même les chaines de caractére pour les commentaires de chaque photo, ensuite, lorsque je construit ma page html, je fais une boucle sur le nombre de photos en affichant a chaque fois le commentaire correspondant a la photo. Voila donc le probleme
Merci
PAulien




-------------------------------
Réponse au message :
-------------------------------

> ben voile, on arrive au meme point, alloc des differents espaces pour chaque string et maintenant oui que va tourner.
> et vive La Rochelle.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Ce que veux expliquer BruNews et ce qui m'apparait comme la solution du problème:
> >
> > #define SIZE ...
> > #define CHAINE1 ...
> > #define CHAINE2 ...
> >
> > char** Tableau = new char* [SIZE];
> >
> > Tableau[0]=new char [strlen(CHAINE1) + 1];
> > strcpy(Tableau[0], CHAINE1);
> >
> > Tableau[1]=new char [strlen(CHAINE2) + 1];
> > strcpy(Tableau[1], CHAINE2);
> >
> > // Utilisation ...
> >
> > // Libération de la mémoire
> > for(int i=0;i<SIZE;i++)
> > delete [] Tableau[i];
> >
> > delete [] Tableau;
> >
> >
> > Kaid - kaid.fr.st
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Entre Rochelais j'aimerais bien t'aider mais la je ne pige pas le blem.
> > > Ce que BruNews t'a répondu ne me semble pas correcte du tout, on peut tout à fait faire comme tu as fais sans allouer à chaque espace mémoire une valeur. C'est bien d'ailleur l'interêt de cette méthode. Dis moi quel est ton compilateur ? Sous quel environnement tu programme ? et enfin quel est la taille de ton SIZE ?
> > > A+.
> > > Bouba
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Bonjour à tous !
> > > > J'essaie de déclarer un tableau de chaines de caractéres dynmiquement, j'ai essayé cette methode, ca ne fonctionne pas, la compilation marche, mais au run time, il y'a une erreur du genre : la memoire ne peut pas etre 'read' ! comme dirais mon prof d'info ! lol
> > > >
> > > > char** Tableau = new char* [SIZE];
> > > >
> > > > Je ne vois absoluement pas l'erreur que j'ai faite, enfin, c les joies de la programmation !!!!
> > > >
> > > > Paulien - La Rochelle - BTS IRIS
> > > > http://www.iris2004.fr.st
> > >
> >
>

dimanche 18 mai 2003 à 20:08:25 | Re : Déclaration dynamique d'un tableau de chaines de caracteres

BruNews

Administrateur CodeS-SourceS
tu n'es pas oblige d'utiliser des constantes en allocation dynamique. Par contre les new, avis perso, sont valables pour instancier une classe car ils appellent le constructeur mais ici malloc ferait l'affaire en moins de code genere. Si tu vises win32 alors HeapAlloc() sera encore + direct.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Merci a tous de l'aide que vous m'apportez, le probléme est que je ne peux pas definir de constantes, en effet, la taille du tableau doit etre declaree en dynamique, c une variable calculée, et les chaines sont aussi insérées en dynamique dans le tableau (à l'execution et non a la compilation), en fait, je fais un generateur de pages html, qui contiendra un nombre de photos precisé par l'utilisateur, et l'utilisateur entrera lui même les chaines de caractére pour les commentaires de chaque photo, ensuite, lorsque je construit ma page html, je fais une boucle sur le nombre de photos en affichant a chaque fois le commentaire correspondant a la photo. Voila donc le probleme
> Merci
> PAulien
>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > ben voile, on arrive au meme point, alloc des differents espaces pour chaque string et maintenant oui que va tourner.
> > et vive La Rochelle.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Ce que veux expliquer BruNews et ce qui m'apparait comme la solution du problème:
> > >
> > > #define SIZE ...
> > > #define CHAINE1 ...
> > > #define CHAINE2 ...
> > >
> > > char** Tableau = new char* [SIZE];
> > >
> > > Tableau[0]=new char [strlen(CHAINE1) + 1];
> > > strcpy(Tableau[0], CHAINE1);
> > >
> > > Tableau[1]=new char [strlen(CHAINE2) + 1];
> > > strcpy(Tableau[1], CHAINE2);
> > >
> > > // Utilisation ...
> > >
> > > // Libération de la mémoire
> > > for(int i=0;i<SIZE;i++)
> > > delete [] Tableau[i];
> > >
> > > delete [] Tableau;
> > >
> > >
> > > Kaid - kaid.fr.st
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Entre Rochelais j'aimerais bien t'aider mais la je ne pige pas le blem.
> > > > Ce que BruNews t'a répondu ne me semble pas correcte du tout, on peut tout à fait faire comme tu as fais sans allouer à chaque espace mémoire une valeur. C'est bien d'ailleur l'interêt de cette méthode. Dis moi quel est ton compilateur ? Sous quel environnement tu programme ? et enfin quel est la taille de ton SIZE ?
> > > > A+.
> > > > Bouba
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Bonjour à tous !
> > > > > J'essaie de déclarer un tableau de chaines de caractéres dynmiquement, j'ai essayé cette methode, ca ne fonctionne pas, la compilation marche, mais au run time, il y'a une erreur du genre : la memoire ne peut pas etre 'read' ! comme dirais mon prof d'info ! lol
> > > > >
> > > > > char** Tableau = new char* [SIZE];
> > > > >
> > > > > Je ne vois absoluement pas l'erreur que j'ai faite, enfin, c les joies de la programmation !!!!
> > > > >
> > > > > Paulien - La Rochelle - BTS IRIS
> > > > > http://www.iris2004.fr.st
> > > >
> > >
> >
>


1 2

Cette discussion est classé dans : dynamique, tableau, caracteres, chaines, déclaration


Répondre à ce message

Sujets en rapport avec ce message

Help : déclaration dynamique de TABLEAU ??? [ par TheBabyCool ] J'ai besoin d aide, car je ne sais pas comment déclarer dynamiquement un tableau.Merci allocation dynamique d'un tableau à trois dimensions [ par yo62 ] Bonjour,J'ai un bête pointeur dans une structure :int *Tableau;et je voudrais que ce pointeur pointe sur une allocation dynamique de type tableau mais Remplir d'un tableau avec des chaines de characteres sour borlandc++ builder [ par sirvincent ] bonjour, comme marque dans le titre j'aimerais savoir comment on fait pour remplir un tableau avec des chaines de characteres, kel objet faut'il utili Probleme Comparaison deux chaines de caracteres [ par Coxis ] Salut,Bon c pas compliqué j'ai 2 tableaux de caracteres de tailles differentes, je veux les comparer mais ca marche pas...En fait a la base je voulais tableau dynamique de structures (niveau debutant) [ par SYL666 ] bonjour,j'ai un petit probleme: j'aimerai definir un tableau dynamique dont la taille n'est connu qu'a l'execution.voila mon code:{ long max; struct Liste chainé - Tableau dynamique [ par Alucard ] Bonjour,Je me demandais quel était le meilleur choix à faire entre ces 2 systèmes de gestion de suite d'objets en mémoire.J'hésite un peu car finaleme tableau dynamique d'objets [ par jonathan100 ] Bonjour a tous! Voici mon probleme. J'ai une classe Voiture dans Voiture.h. Dans le programme principal, je souhaite créer un tableau qui contiendra d tableau de chaines de char [ par JaguiJaguar ] Salut, je suis etudiant.je dois réaliser un prog en c qui lit une chaine de char, la stocke dans la premiere ligne d'un tableau char *tab[n]où n est l Problème pour passer un tableau dynamique à une fonction [ par muguss ] Je n'arrive pas à passer parfaitement mon tableau dynamique de type HANDLE à ma fonction afin que cette dernière ajoute un HANDLE au tableau, donc l'a help ! -> tableau de string 2 dimension dynamique [ par Jiraiya ] voila, pour mon proG tutore de 2 eme annee je cherche a traiter des chaines de caracteres stockées depuis un fichier.txt jusqu'a un tableau de string,


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.