Problèmes arguments de la fonction main
Résolu
susano17
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
susano17 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
susano17 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je rencontre un problème avec les arguments passé à ma fonction main (au moment de l'appel de l'exécutable) en effet j'ai plusieurs conditions dépendant des arguments passés au main renvoyant à des fonction,mais lorsque je rentre les bons argument mon programme ne les interprète pas du out et me renvoie le message de la condition d'erreur.
Voici le code de ma fonction main :
Pourriez-vous me venir en aide s'il vous plaît, je souhaite que lorsque je renseigne le paramètre "-verbose" cela me renvoie vers ma fonction analyse_trame (je code sur linux, feedora) .
Merci par avance !
Je rencontre un problème avec les arguments passé à ma fonction main (au moment de l'appel de l'exécutable) en effet j'ai plusieurs conditions dépendant des arguments passés au main renvoyant à des fonction,mais lorsque je rentre les bons argument mon programme ne les interprète pas du out et me renvoie le message de la condition d'erreur.
Voici le code de ma fonction main :
int main(int argc ,char *argv[]) { const int MTU = 1500; const int MAXchar = 1500*2+1500+2; FILE *fd = fopen("dump.txt","r"); char str[MAXchar]; int i=1; printf("\n%s",argv[1]); if((argc >=2) && (argv[1]=="-[/download/telecharger-34079918-verbose verbose]"))/* c'est ici qu'est le problème*/ { while (!feof(fd)) { fgets(str, MAXchar, fd); if (strlen(str) >= 181) { printf("\n\n--------Trame n° %d ------\n\n",i); analyse_trame(str); i+=1;} } } if(argc < 2) { while (!feof(fd)) { if (fgets(str, MAXchar, fd) != 0) { analyse_flag(str); } } } if(argc >=2 && argv[1] != "-verbose") { printf("Mauvais argument, utilisez l'argument < -verbose > !\n\n");} fclose(fd); }
Pourriez-vous me venir en aide s'il vous plaît, je souhaite que lorsque je renseigne le paramètre "-verbose" cela me renvoie vers ma fonction analyse_trame (je code sur linux, feedora) .
Merci par avance !
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Problèmes arguments de la fonction main
- Fonction si et - Guide
- Scan ligne de la main gratuit - Télécharger - Photo & Graphisme
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Durée de fonctionnement processeur ✓ - Forum Windows 10
2 réponses
argv[1]=="-verbose")
non
argv[1] != "-verbose"
et non
Tu dois utiliser strcmp : http://manpagesfr.free.fr/man/man3/strcmp.3.html
Bonjour,
char str[MAXchar];
Attention, ce n'est possible qu'en C99.
printf("\n%s",argv[1]);
Il vaudrait mieux vérifier le nombre d'arguments (argc) avant de faire appel à argv.
if((argc >=2) && (argv[1]=="-verbose"))/* c'est ici qu'est le problème*/
La comparaison de chaîne ne se fait pas comme ça. Utilise plutôt strcmp().
while (!feof(fd))
Attention à son utilisation. Cela détermine la cause de l'erreur de lecture du fichier. Il faut donc lire le fichier avant, et s'il y a eu une erreur, là tu peux utiliser feof(...).
Et enfin, il manque un return 0; en fin de fonction.
Cdlt,
char str[MAXchar];
Attention, ce n'est possible qu'en C99.
printf("\n%s",argv[1]);
Il vaudrait mieux vérifier le nombre d'arguments (argc) avant de faire appel à argv.
if((argc >=2) && (argv[1]=="-verbose"))/* c'est ici qu'est le problème*/
La comparaison de chaîne ne se fait pas comme ça. Utilise plutôt strcmp().
while (!feof(fd))
Attention à son utilisation. Cela détermine la cause de l'erreur de lecture du fichier. Il faut donc lire le fichier avant, et s'il y a eu une erreur, là tu peux utiliser feof(...).
Et enfin, il manque un return 0; en fin de fonction.
Cdlt,
si l'utilisateur entre l'argument "-verbose",
je ne comprend donc pas pourquoi vous me conseillez d'utiliser la condition indiquant une différence
Cordialement
mon programme fonctionne maintenant parfaitement !