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

Linux Discussion :

Passer une variable C en Shell avec un system()


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Par défaut Passer une variable C en Shell avec un system()
    Bonjour,

    Mon probléme est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    main()
     int username2=0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    printf("..::Creer un utilisateurs::.. \n \n");
    printf("Veuillez entrer le nom de login: ");
    scanf("%c", &username2);
    system("/user/sbin/useradd %c", username2);

    lorsque je compile j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    In function 'main'
    erreur: too many arguments to fonction 'system'
    Info : Je suis sous mandriva 2008

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par défaut
    tu n as pas le droit de faire cela, la commande system n accepte qu une seule chaine de caractères, et tu ne peux pas introduire plusieurs éléments.
    essaies ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char commande[BUFF_SIZE];
     
    sprintf(commande,"/user/sbin/useradd %c", username2);
    system(commande);
    par exemple

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ashin Voir le message
    tu n as pas le droit de faire cela, la commande system n accepte qu une seule chaine de caractères, et tu ne peux pas introduire plusieurs éléments.
    Exact. Les "%" sont des marqueurs spécifiques aux fonctions de type "printf()" et la fonction "system()" ne sait pas ce que c'est...

    Citation Envoyé par Ashin Voir le message
    essaies ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char commande[BUFF_SIZE];
     
    sprintf(commande,"/user/sbin/useradd %c", username2);
    system(commande);
    par exemple
    Il n'y a qu'un seul caractère dans "username2" ? C'est possible mais je trouve cela étrange. D'un coté il est défini en tant qu'int, de l'autre on lui entre un "nom de login". Bizarre tout ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char username2[256];
    printf("Entrez un nom de login");
    scanf("%s", username2);
    sprintf(commande,"/user/sbin/useradd %s", username2);
    Mis à part ce détail, le code est bon...

    Citation Envoyé par electro38 Voir le message
    Info : Je suis sous mandriva 2008
    T'as pas de bol mais on t'aidera quand-même...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par défaut
    j ai recopié son code sans même chercher a comprendre

    oui effectivement un login qu avec des chiffres , remarque pourquoi pas mais bon de toute façon ça aurait été %d; l utilisation d un tableau de char est mieux approprié dans ton cas comme te l a dit Sve@r ou un char * a la limite.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ashin Voir le message
    ou un char * a la limite.
    Avec un char* faudra penser à allouer de la mémoire sinon fume...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par défaut
    oui allouer puis libérer par la suite, il trouvera des tutos j en doute pas.
    mais bon notre ami n a pas l air de s y intéresser énormément a son problème

Discussions similaires

  1. passer une variable perl à un commande shell
    Par titomiss dans le forum Langage
    Réponses: 1
    Dernier message: 19/02/2008, 20h07
  2. [Custom Tags 1.2] Passer une variable comme valeur d'attribut d'un tag jsp
    Par Pi2 dans le forum Taglibs
    Réponses: 7
    Dernier message: 16/09/2005, 14h44
  3. Passer une variable entre deux fenêtres
    Par DeezerD dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/08/2005, 09h52
  4. [Struts] Passer une variable dans l'url
    Par pilz dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/03/2005, 15h23

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