tezca_system
Messages postés25Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention 5 mars 2007
-
12 janv. 2007 à 11:12
tezca_system
Messages postés25Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention 5 mars 2007
-
12 janv. 2007 à 14:29
Bonjour
J'ai des pb pour manipuler char *argv[] lors de son passage en argument d'une fonction.
char *argv[] est une chaine de caractere saisi à l'invite sur la ligne de commande, et je souhaite ensuite l'afficher.
L'afficher depuis mon main() ca passe mais depuis une fonction qui prends comme argument char *argv[] ca plante (segmentation fault).
POuvez vous m'aider svp, des conseils, des bouts de code.
Concretement je pense que j'ai un pb de syntaxe pour passer char *argv[] en parametre d'une fonction, compliquer car j'ai l'impression que c un pointeur sur pointeur.
Quel doit etre le protype de la fonction?
Merci par avance.
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 12 janv. 2007 à 14:03
Ca va dépendre de plusieurs paramètres :
Si tu connais la taille de ta chaine = par exemple la taille sera < 200, tu fais char text[200];
ou alors une macro (en debut de fichier) #define MAX_TEXT 200 et après char text[MAX_TEXT]
Si tu connais pas la taille de ta chaine ou que la chaine et tres grosse il faut mieux utilise un malloc. ATTENTION SI TU UTILISE UN MALLOC IL FAUT UTILISER DES FREE sinon tu vas avoir des fuites de mémoire.
++
tezca_system
Messages postés25Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention 5 mars 2007 12 janv. 2007 à 13:32
Merci Beaucoup evident quand c ecrit comme cela, mais rien de naturel lorsque seul on commence à "pointer" partout.
Je continue avec beaucoup de sang froid car vraiment necessaire dans ce language.
(a rajouter un pb de ";" que le compilateur n'a pas deceler par c t pas mauvais syntaxiquement..dur dur)
a tres bientot.
Merci
tezca_system
Messages postés25Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention 5 mars 2007 12 janv. 2007 à 13:43
Allez juste un autre petit conseil tant qu'on parle de buffer et de pointeur.
Qu'elle est la methode la plus usuelle pour manipuler une chaine de caractere?
Creer un buffer de type "char buffer[56]";
Ou un pointeur avec une allocation de memoire derriere de type: char *buffer; puis une allocation de type
buffer = (char *) malloc (sizeof(*buffer) * 56);
Probablement qu'en language machine cela revient au meme mais juste afin de prendre une bonne habitude.
Vous n’avez pas trouvé la réponse que vous recherchez ?