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 :

faire la commande echo en C


Sujet :

C

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Par défaut faire la commande echo en C
    Bonjour, je voudrais coder la commande echo en C.
    Voici ce que j'ai ecrit
    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
    25
    26
    27
    28
     
    int echo(int nbEntrees,char path_name[], char *args_vect[], int *status,pid_t *pid,char *envp[]){
     
      int i=1,res=0;
     
      if(strcmp(path_name,"echo")==0){
        res=545454;
        while(args_vect[i]!=NULL){
     
     
          if(args_vect[i][0]=='$'){
    	char *res;
    	res=args_vect[i]+1;
    	if((res=getenv(res))!=NULL)
    	  printf("%s\n",res);
    	else
    	  printf("%s\n",args_vect[i]);
          }
          else{
    	printf("%s ",args_vect[i]);
          }
    	i++;
        }
      }
     
      return res;
     
    }
    path_name contient la commande à executer
    args_vect est un tableau de paramètre

    ma fonction marche pour l'echo normal et pour les variable d'environnement
    mais je n'arrive pas à évaluer les expressions numeriques.
    Si vous pouvez m'aider
    Merci

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut

    echo n'evalue pas les expressions numeriques, tous les paramètres d'un programme sont des chaines, et echo se fiche si le parametre chaine est constitué de chiffres ou pas.
    Au fait ça ne sert à rien de recuperer les variables d'environnement avec getenv puisqu'elles seront remplacée par le shell lors de l'invocation de la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ ./mon_echo homedir : $HOME
    $HOME est remplacé par sa valeur avant d'executer "mon_echo"

    c'est la meme chose pour echo d'ailleurs

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Par défaut
    Si j'ai bien compris ce que tu me dit il suffirait de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    execve("/bin/echo", parametre,environnement)
    pour que ça marche.
    Mais je crois que les variables d'environnements ne sont pas transmis lors du lancement d'un programme, donc je crois que "echo" ne reconnais pas les variables d'environnements il se contente d'afficher ce qu'on lui donne en parametre. Voila pourquoi j'ai utilise "getenv".

    En ce qui concerne les expressions numériques quand tu tapes il t'affiche 2.
    Je crois avoir trouve une solution mais un peu longue est fastidieuse en utilisant la commande expr mais il faut manipuler les parametres envoye à echo pour les mettre en bonne forme pour "expr"

    Merci de ton aide

  4. #4
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Tu confonds echo et l'opérateur du shell $ (qui a des usages multiples, on peut meme faire de la recherche/remplacement de pattern dans des chaines avec...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    > mavar=$((1 + 1))
    > mavar2="abc $mavar abc"
    > echo $mavar2
    J'ai utilisé l'opérateur dollar pour les expressions numeriques et j'ai mis le resultat dans mavar, j'ai ensutie initialisé une variable avec une chaine où les $ peuvent etre analysés par le shell (c'est ce qu'il se passe qd on met les guillemets), et enfin j'ai affiché cette variable avec echo (qui encore une fois était substituee par sa valeur par le shell avant que le paramètre ne soit fourni à echo)

Discussions similaires

  1. Aide avec commande ECHO
    Par lafmart dans le forum Langage
    Réponses: 1
    Dernier message: 04/02/2007, 06h06
  2. impossible de faire une commande INSERT
    Par nirolioben dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/11/2006, 16h14
  3. [Débutant] Implémentation commande echo
    Par Tuxico dans le forum C
    Réponses: 14
    Dernier message: 10/10/2006, 14h49
  4. Réponses: 4
    Dernier message: 15/02/2006, 04h56
  5. Comment aller a la ligne avec la commande ECHO
    Par juflata dans le forum Windows
    Réponses: 3
    Dernier message: 23/06/2004, 17h11

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