begin process at 2010 02 10 08:57:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Newbies et problème de pointeur


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

Newbies et problème de pointeur

dimanche 21 novembre 2004 à 17:59:05 | Newbies et problème de pointeur

dartal




Bonjour ,

J'ai quelque problème de compréhension au niveau de la gestion des pointeurs ... j'ai essayé de me documenter un maximum en lisant des bouquins de C/C++ etc ... mais c'est encore très flou dans mon esprit ....

J'ai une question très simple qui me pose problème ...

Je voudrais que l'utilisateur d'un programme saisisse une série de commandes .... Je voudrais ensuite enregistrer toutes ces commandes dans un tableau ( à ce que j'ai compris , en C tableau = pointeur .... )
Le problème c'est que je ne sais pas du tout combien de commande l'utilisateur va saisir ....

Il faudrait donc que je déclare un tableau sans en connaitre le nombre d'élements ....

je me suis dis que ça serait ptet plus simple en faisant de l'arithmétique de pointeur ( mais ptet que je me plantes et qu' il y a plus simple )


Je suppose qu'il doit y avoir un rapport avec l'allocation de mémoire dynamique ( avec un malloc ou un calloc ) mais je vois pas trop comment m'y prendre .....

Est ce que kelk'un pourrait m'éclairer sur la déclaration de tableau avec un nombre d'élements indifinis ???

Merci d'avance ...

dimanche 21 novembre 2004 à 18:38:13 | Re : Newbies et problème de pointeur

Arnaud16022

Membre Club
qu'appelles-tu une commande? un nombre? un float ? un char*? un char[]...?
dimanche 21 novembre 2004 à 18:49:45 | Re : Newbies et problème de pointeur

djl

dartal > justement tableau != de pointeur


/* déclaration d'un tableau */
int v[10];

si la ne peut etre resolu à la compilation (inconnu)

/* allocation dynamique */
int *p;

p = malloc( s * sizeof*p );

free( p );
dimanche 21 novembre 2004 à 19:07:50 | Re : Newbies et problème de pointeur

dartal

Tou d'abord merci de vos réponses .....

>qu'appelles-tu une commande? un nombre? un float ? un char*? un >char[]...?

En fait l'utilisateur doit rentrer un char* que je découpe à chaque espace ...
J'aimerais entrer les différentes mots entrés dans un tableau...
(chaque paramètre de la commande en fait )

>/* allocation dynamique */
>int *p;
>p = malloc( s * sizeof*p );
>free( p );

Le malloc m'allouera un espace mémoire de taille seulement , mais comment savoir le nombre d'élement p à allouer ???
( perso je peux pas savoir le nombre de commande que l'utilisateur va entrer )

Est que le malloc me permet vraiment de définir un espace mémoire ( un genre de tableau koi ) sans obligatoirement en connaitre la taille ????

Merci d'avance ....
dimanche 21 novembre 2004 à 19:17:32 | Re : Newbies et problème de pointeur

djl

dans ce cas il te faut une liste (std::list en c++)

ou alors (plus simple en c)

tu fais un malloc, et un realloc si necessaire au cours de la saisie (et en fin de saisie)
dimanche 21 novembre 2004 à 20:34:42 | Re : Newbies et problème de pointeur

Arnaud16022

Membre Club
djl-> c'et possible alors de faire malloc avec un seul 'mot', puis a chaque mot entré, de faire realloc ? c'est pas super lent ou quoi?
dimanche 21 novembre 2004 à 20:39:25 | Re : Newbies et problème de pointeur

djl

oui c'est possible

pour la lenteur, ca peut etre tres lent (en imaginant le pir)

si il n'y a pas assez d'espace memoire en contunuité, realloc fais un deplacement memoire de la zone (donc alllocation ailleur + copie, lent )

donc l'interet de realloc c'est de pouvoir reallouer (pour rallonger ou diminuer la taille d'une zone allouer) mais ca n'empeche pas d'utiliser une strategie de reallocation pour rester performant
dimanche 21 novembre 2004 à 20:44:06 | Re : Newbies et problème de pointeur

Arnaud16022

Membre Club
"deplacement memoire de la zone"
merci djl tu viens de répondre a une question que je me posais depuis des temps immémoriaux

sinon, si il n'y a qu'une seule char* entrée par l'utilisateur, pourquoi ne pas trouver le nombre d'espaces contenues dans cette chaine, ce qui donne le nombre de mots, puis allouer ta mem a partir de la, puis enfin de faire 'copier-coller' du char* a la meme allouée?
dimanche 21 novembre 2004 à 20:52:35 | Re : Newbies et problème de pointeur

djl

oui c'est possible, mais je crois que pour dartal une commande == les mots saisies (1 lignes) et que c'est justement le nombre de lignes (à saisir) qu'il ne sait pas combien il ne connait pas



pour le realloc et le deplacement memoir, c'est tres important, et c'est d'ailleur pour ca que realloc retourne un pointeur (qui est en fait l'adresse de la nouvelle zone allouer si necessaire)

il faut toujours ecrire

p = realloc( p, ... );

car la zone peut avoir changer d'adresse, d'ailleur tout autre pointeur contenant la valeur de p (ou une valeur décalé) avant le realloc est potentielement invalide
lundi 22 novembre 2004 à 09:44:13 | Re : Newbies et problème de pointeur

dartal


En fait pour moi une commande = un mot

C'est pour la création d'un mini-shell , l'utilisateur rentre un char* de type : " ls -l -i " etc ..... , je la découpe en mot ... mais je ne sais pas combien de paramêtre il peut rentrer.

Mais comme dit plus haut , il me suffit de faire un malloc de taille mon char* rentré par l'utilisateur ^-^

Le realoc est donc je suppose facultatif .....

( ça m'aura permis de comprendre comment gérer tout ça si on ne connais vraiment pas la taille ^^)

En tout cas je vous remercie de votre aide !!!






1 2

Cette discussion est classée dans : problème, simple, tableau, pointeur, newbies


Répondre à ce message

Sujets en rapport avec ce message

Problème de tableau ! [ par Xentor ] Bonjour,Je voudrais déclarer un tableau de caractères en variable générale et pouvoir modifier sa taille dans une fonction !Exemple (écrit en direct, je comprend plus rien(pointeur) [ par bidules ] Bonjour,Pour moi on utilise les pointeur pour creer des tableau dynamiquement.or j'ai reussi a en declarer un avec une taille entrer a l'aide d'une va problème de pointeur en C [ par iljamila ] problème de pointeur et d'objet pointé [ par leptit ] Bonjour, Je vous présente le problème en C:struct assoc { int l, *n ; }*n est un pointeur vers une alloc dynamique de memoirestyle tableau d'entier.Je Problème de pointeur [ par sebastienbro ] Bonjour,G une fonction ki a comme argument un pointeur vers un struct personnalisé.J'aimerais savoir commen je peu faire pour modifier lé éléments de CREATION D UN SIMPLE TABLEAU avec InstallShield [ par tokarno ] Je viens de me mettre à l'InstallShield Prof.Mais je croyais que c'était la même syntaxe que pour le C.Malheureusement je n'arrive même po à créer un tableau de structures type pointeur [ par chocho ] Voila, je fait en c unpetit utilitaire de gestion d'adhérents.pour cela j'uilise un tableau de structure adhérent composée de deux pointeurs char *nom tableau et pointeur [ par cognac ] Bonjour,Je tente de faire apparaitre les mois de l'année (simple mais pour un débutant....). Bon il y a toujours "cout"12 fois mais j'ai pensé à un ta Mémoire partagée et pointeur [ par darsh99 ] Bonjour,J'essai de faire passer un tableau dynamique, un pointeur donc, d'un programme à un autre, l'adresse est bien passée et les champs non dynamiq traitement de tableau dans une routine asm [ par anosan ] Salut tout le monde,J'explique mon problème: dans un programme en C++(borland c++builder6), j'ai declaré un tableau. Pour le traiter efficassement, j'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,312 sec (4)

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