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 :

appel du programme avec argc[] et argv[]


Sujet :

C

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 60
    Points : 25
    Points
    25
    Par défaut appel du programme avec argc[] et argv[]
    bonjour ,
    donc voilà, j'ai besoin d'un programme qui génère un fichier contenant un nombre de ligne à passer en paramètres et chaque ligne contient le numero de la ligne et un nombre aléatoire compris entre 15 et 120
    voilà le code
    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
    21
    22
    23
    24
     
    #include  <stdio.h>
    #include <stdlib.h>
    int main(int argc, char*argv[]) {
    int      nb = atoi (argv[1]);
    int      min = atoi(argv[2]);
    int      max = atoi(argv[3]);
    int      index;
    int      nb_ligne;
     
    FILE   *fd;
     
    srand(time(NULL));
    fd = fopen("fichier", "w");
    for (nb_ligne = 0; nb_ligne < nb; ++nb_ligne)
    {
       //for (index = 0; index < nb_ligne; ++index)
        //{
            fprintf(fd, "%d\t%d\n",nb_ligne+1, ((rand() % max) + min));
        //}
        fprintf(fd, "\n");
    }
    //return 0;
    }
    je ne sais pas trop comment utiliser argc et argv
    quand je fais gcc nomprogramme.c
    ça compile normalement sans aucune faute
    mais quand je fais appel à ./a.out
    il me donne
    Erreur de segmentation (core dumped)

    je comprends pas ..je sais que je me trompe quelque part , surtout au niveau de l'appel du programme lui meme mais je ne sais pas comment faire
    merci d'avance

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 372
    Points : 23 628
    Points
    23 628
    Par défaut
    Bonjour,

    Tu fais appel à trois arguments argv[1], argv[2] et argv[3]… qui n'existent pas sur ta ligne de commande ! Si tu tapes « ./a.out 5 6 7 », par exemple, ça fonctionnera beaucoup mieux.

    « argc » te donne le nombre d'arguments disponibles sachant que le premier, argv[0] est le nom du programme.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 60
    Points : 25
    Points
    25
    Par défaut
    merci infiniment c'est ce que je demandais comment faire appel ;-)
    je sais que argv[0] par defaut c'est le nom du programme donc inutil de le declarer
    sinon pr le argc c'est pas la peine de l'initialiser non?

    voilà c bon ça fonctionne correctement
    merci infiniment :-)

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    Je suis même pas sûr que vous puissiez!

    argc et argv[] sont des variables déjà initialisées par le noyau et "passés" au processus au moment de son lancement pour qu'il puisse par exemple connaître les options que l'utilisateur a tapé en ligne de commande. Ou encore le nom avec lequel il a été appelé (vim, diff et autres sont le même exécutable - diff étant un lien symbolique vers vim - mais qui s'initialise différemment en fonction du nom d'appel - argv[0]). Dites vous qu'au moment ou vous rentrez dans votre main (et même bien avant), ces deux variables sont déjà initialisées.

    Donc même si c'est possible (ce dont je doute), vous n'avez vraiment pas besoin d'y toucher. Je dirai même vaut mieux pas!

    Cordialement

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 60
    Points : 25
    Points
    25
    Par défaut
    bonsoir
    désolée mais j'ai pas compris votre remarque c'est concernant l'intialisation de argc ou de l'appel meme ..j'ai pas saisi?!!

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Tout simplement, les variables argc et argv sont gérés par le système. Vous n'avez pas besoin de les toucher (elle devrait être utilisés quand lecture uniquement).

    Dès le début du programme, argv donne le nombre d'éléments disponibles dans argv
    argv, un tableau de chaines de caractères qui correspondent aux arguments passés au programme.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 60
    Points : 25
    Points
    25
    Par défaut
    merci ;-)

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Je te déconseille d'utiliser atoi. Utilise plutôt la fonction strtol, qui est beaucoup plus propre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'un second programme avec paramètre
    Par atum25 dans le forum C++
    Réponses: 2
    Dernier message: 12/06/2012, 08h36
  2. Soucis avec argc et argv dans fichier Header
    Par kegilko dans le forum Débuter
    Réponses: 8
    Dernier message: 09/11/2008, 16h13
  3. Réponses: 2
    Dernier message: 13/09/2008, 19h49
  4. Réponses: 5
    Dernier message: 14/05/2008, 18h14
  5. Appeler un programme sur le poste client avec <object>
    Par ouioui2000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/08/2005, 14h40

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