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 :

Problème fonction system()


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut Problème fonction system()
    Bonjour,

    j'aimerais lancer un script avec plusieurs arguments depuis un programme c et j'ai un petit soucis avec le passage des arguments.

    En fait, quand je fais :

    system("/chemin absolu du script/ arg1 arg2");
    ou

    var="/chemin absolu du script/ arg1 arg2";
    system(var);
    ça marche nickel.

    Par contre quand je fais :

    scanf("%s", var); donc je lis ma valeur entré par l'utilisateur
    system(var);
    là ça foire. Mon script s'exécute mais mal car les arguments sont ignorés à priori. Sans doute les espaces dans mon scanf qui posent problème ?

  2. #2
    Membre Expert
    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
    Par défaut
    Salut

    C'est à cause des espaces dans la chaine.

    Utilise plutôt ce genre de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char var[TAILLE_MAXI_TABLEAU];
    fgets( var , TAILLE_MAXI_TABLEAU , stdin);
    ... sans oublier par la suite de supprimer le caractère '\n'.

  3. #3
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    Merci pour ta réponse.
    Mais apparemment, le problème venait de deux slashes qui se suivait, enfin si le problème venait vraiment de là. Ca coupait mon string et je perdais mes arguments... Très très très étrange, enfin bon c'est reglé en tous cas. Désolé de ne pas soumettre une meilleure justification du problème, mais même moi je ne suis pas sûr de ce qui s'est passé lol !

  4. #4
    Membre Expert
    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
    Par défaut
    Mais apparemment, le problème venait de deux slashes qui se suivait,
    Très très très étrange
    Rien d'étrange. Comme je t'ai dit, dans la chaine, il y a des espaces (entre arguments notamment).
    La solution que je t'ai donné fonctionne à coup sûr.

    Pour t'en rendre compte, rajoute un printf après le scanf. Ca te permettra de voir ce que scanf enregistre réellement dans ta chaîne.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
     
    int main(void)
    {
    	char var[]="/chemin/absolu//du//script/ arg1 arg2"; /* avec un ou deux slashs, ça ne change rien */
    	char resultat[100];
     
    	sscanf(var,"%s", resultat);
     
    	printf("%s",resultat);
     
    	return 0;
    }
    Résultat :
    /chemin/absolu//du//script/

  5. #5
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    Oui j'ai bel et bien utilisé ta solution et ça fonctionne bien.
    Merci

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

Discussions similaires

  1. Problème avec fonction system();
    Par Alays dans le forum C
    Réponses: 3
    Dernier message: 23/09/2012, 11h08
  2. problème pour utiliser fonction system
    Par Neolex dans le forum Réseau
    Réponses: 2
    Dernier message: 11/09/2012, 17h30
  3. Réponses: 9
    Dernier message: 29/04/2008, 13h38
  4. Réponses: 2
    Dernier message: 30/03/2004, 11h31
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

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