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   -
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 :

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:

2 réponses

Utilisateur anonyme
 
argv[1]=="-verbose")


non

argv[1] != "-verbose"


et non


Tu dois utiliser strcmp : http://manpagesfr.free.fr/man/man3/strcmp.3.html
0
susano17 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour je souhaite lancer la fonction : analyse_trame(str)

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
0
susano17 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Je vous remercie tout de même de m'avoir aiguiller vers la fonction dont je semble avoir besoin !
0
susano17 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
MERCI A VOUS Rocailleux !!!
mon programme fonctionne maintenant parfaitement !
0
Utilisateur anonyme
 
En fait chaine1 == chaine2 va comparer l'adresse en mémoire des deux chaines et non le contenu, il faut donc passer par strcmp.
0
susano17 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
très bien j'ai compris merci!
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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,
0
susano17 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour et merci
pour le return 0 ; je ne l'ai pas utilisé mais mon programme fonctionne parfaitement avec strcmp est-ce qu'il vaut mieu que je mette un return 0;
si ou ou dois-je le mettre
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ce n'est pas parce que ça fonctionne correctement que c'est correct :-).

Le return 0; se place en fin de fonction. Juste avant l'accolade finale.
N'oublie pas de revoir aussi le feof().
0
susano17 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
pour feof justement je vérifie à ce moment là qu'il n'y a pas 'erreur
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > susano17 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Ben non. Tu utilises feof() avant de lire le contenu du fichier...
0
susano17 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
ah donc il faudrait que je mettes mon fgets avant les conditions (if) et a la fin des while si je comprend bien ?
0