Argument du main
g30
-
stajem Messages postés 389 Statut Membre -
stajem Messages postés 389 Statut Membre -
Bonjour,
j'ai une fonction à laquelle je passe un "char *" a partir des arguments que j'ai entré à l'execution
ca marche sans probleme
mais quand je rappelle la fonction en envoyant un "char *" créé juste avant et auquel j'ai assigné exactement la même chose ca ne marche pas
en gros:
a l'execution -> nomDuProgramme 1234
int main(int argc,char * argv[]){
....
maFonction(argv[1]); // ca marche
char * s="1234";
maFonction(s); // la ca plante quand j'utilise strtok ( qui marche très bien avant
...
}
j'ai une fonction à laquelle je passe un "char *" a partir des arguments que j'ai entré à l'execution
ca marche sans probleme
mais quand je rappelle la fonction en envoyant un "char *" créé juste avant et auquel j'ai assigné exactement la même chose ca ne marche pas
en gros:
a l'execution -> nomDuProgramme 1234
int main(int argc,char * argv[]){
....
maFonction(argv[1]); // ca marche
char * s="1234";
maFonction(s); // la ca plante quand j'utilise strtok ( qui marche très bien avant
...
}
Configuration: Windows Vista Firefox 3.0.5
4 réponses
-
-
Attention , ton argv[1] vaut "1234,1234", pas seulement "1234".
Si tu veux faire un appel comparable avec ton pointeur s, il faut faire :
char * s="1234,1234";
Mais je crois (pas sûr) que le problème vient de ce que la fonction strtok modifie la chaîne analysée en remplaçant les délimiteurs par de zéros. Or ta chaîne étant uen constante, le compilateur la place peut-être dans une zone dont la modification est interdire. Pour vérifier, essaye :
char * s="1234,1234";
char s1[20];
strcpy( s1,s);
maFonction(s1);
La zone pointée par s1, elle, devrait être modifiable. -
-