IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Pb avec argv : argv[1] vide


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 16
    Par défaut Pb avec argv : argv[1] vide
    Bonjour à tous,

    j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    int main(int argc, char* argv[])
    {
      FILE *yyout2;
      const char* DocName;
     
      /* Ouverture du fichier HTML */
      if((yyout2 = fopen(argv[1], "r")) == NULL){
        cout << "fichier HTML non ouvert" << endl;
        }
     
      /* Appel de la fonction automate */
      DocName = automate(yyout2);
     
      rename(argv[1], DocName);
     
      return 0;
    }
    Cependant, il m'affiche toujours "ficher HTML non ouvert", puisque dans argv[1] il n'y a rien (j'ai testé, d'ailleurs argc=1).

    Comment se fait-il qu'il n'y ait rien dans argv[1] ? Comment puis-je résoudre ce problème ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Comment se fait-il qu'il n'y ait rien dans argv[1] ?
    Qu'est-il censé y avoir ? Tu appelles comment ton executable ?

  3. #3
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Bonjour,
    Il faut tester argc avant toute utilisation de argv:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    int main(int argc, char* argv[]) 
    { 
      FILE *yyout2; 
      const char* DocName; 
      // Usuellement on donne la syntaxe si le nombre d'argument est incorrect.
      if (argc < 2)
         cout <<"Syntaxe : "<<argv[0]<<" Nom fichier (HTML)";
      /* Ouverture du fichier HTML */ 
      if((yyout2 = fopen(argv[1], "r")) == NULL){ 
        cout << "fichier HTML non ouvert" << endl; 
        } 
     
      /* Appel de la fonction automate */ 
      DocName = automate(yyout2); 
     
      rename(argv[1], DocName); 
     
      return 0; 
    }
    [edit] En effet, il vaut au moins 1, le nom du programme. Fatigue.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    euh, il me semble qu'argc n'est jamais zéro...
    Teste plutot s'il est inférieur à deux...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Requête sélection avec comme critère: champ vide
    Par droxyme dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/10/2007, 10h24
  2. Enveloppe SOAP avec données, objet récupéré vide
    Par naz dans le forum Services Web
    Réponses: 1
    Dernier message: 25/09/2007, 17h21
  3. Composant TEdit avec texte affiché si vide
    Par g.ribeiro dans le forum Composants VCL
    Réponses: 5
    Dernier message: 05/09/2007, 20h19
  4. Réponses: 2
    Dernier message: 18/05/2007, 11h09
  5. [CR9] Bug avec les champs à valeur vide ?
    Par Djob dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 15/07/2003, 21h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo