Pb de debutant en C

Résolu
tezca_system Messages postés 25 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 5 mars 2007 - 12 janv. 2007 à 11:12
tezca_system Messages postés 25 Date d'inscription lundi 6 mars 2006 Statut Membre Derniè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.

5 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
12 janv. 2007 à 12:27
void mafonction(char * args[]){
}

int main (int argc, char * argv[]) {
mafonction(argv);
...
}
3
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
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.
++
3
tezca_system Messages postés 25 Date d'inscription lundi 6 mars 2006 Statut Membre Derniè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
0
tezca_system Messages postés 25 Date d'inscription lundi 6 mars 2006 Statut Membre Derniè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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tezca_system Messages postés 25 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 5 mars 2007
12 janv. 2007 à 14:29
MERCI
0
Rejoignez-nous