Pb commande Prog en c

Résolu
Bonjour,

Pouvez_vous m'aidez à comprendre le programme suivant :

#include <stdio.h>
void main(int argc,char* argv[]) {
if(argc<3) {
printf ("°/.s : Usage '/,s <mot-l> <mot-2>\n", argv[0], argv[0]); return; }
printf ("\ty,s\n\ty„s\n",argv [2] ,argv[l]) ; }

Commenter ce programme. Imaginer ensuite que ce programme soit compilé en un programme exécutable prog.

Déterminer l'effet des commandes : prog, prog fleur, prog fleur bouillie, prog fleur bouillie tourbillon.

Merci d'avance.
Configuration: Linux
Firefox 3.0.8

13 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Re,

    "prog, prog fleur, prog fleur bouillie, prog fleur bouillie " ---> qcq ça signifie?
    D'abord c'est à toi de nous dire d'où t'as sorti ces noms.

    Si prog c'est le nom de ton programme exécutable après la compilation alors
    prog - c'est l'exécution du programme sans argument (ça devrait être plutôt ./prog ou /chemin/vers/prog)
    prog fleur - c'est l'exécution du programme avec l'argument fleur
    prog fleur bouillie - c'est l'exécution du programme avec 2 arguments (fleur et bouillie)
    etc.
    1. SVP, quel est l'effet des commandes suivantes j'ai bau cherché mais je ne trouve pas :

      prog, prog fleur, prog fleur bouillie, prog fleur bouillie tourbillon.

      Merci.
      1. Modérateur
        Re,

        lami20j@debian:~/trash$ cat vide.c
        #include <stdio.h>
        int main(int argc,char* argv[])
        {
          if(argc<3) {
            printf ("Usage: %s arg1 arg2\n", argv[0]);
            return -1;
          }
          printf ("y,%ss\ny,%ss\n",argv [2],argv[1]) ;
          return 0;
        }
        lami20j@debian:~/trash$ gcc -Wall vide.c
        lami20j@debian:~/trash$ ./a.out
        Usage: ./a.out arg1 arg2
        lami20j@debian:~/trash$ ./a.out azerty qwerty
        y,qwertys
        y,azertys

        1. Puorquoi on lance l'éxecutable avec deux paramétres :

          cotta@cotta-laptop:~/Bureau$ ./a.out azerty qwerty
          1. Pourquoi j'ai ça comme affichage :

            cotta@cotta-laptop:~/Bureau$ ./a.out ex1td3.c
            ./a.out : Usage ./a.out <mot-1> <mot-2>
            et pourquoi dont on mettre aprés le ./a.out
            cotta@cotta-laptop:~/Bureau$ ./a.out azerty qwerty

            pour avoir cette resultat :

            y,qwertys
            y,azertys
            1. Modérateur
              Re,
              lami20j@debian:~/trash$ cat vide.c
              #include <stdio.h>
              int main(int argc,char* argv[])
              {
                if(argc<3) {
                  printf ("Usage: %s arg1 arg2\n", argv[0]);
                  return -1;
                }
                printf ("%s %s\n",argv [2] ,argv[1]) ;
                return 0;
              }
              lami20j@debian:~/trash$ gcc -Wall vide.c
              lami20j@debian:~/trash$ ./a.out
              Usage: ./a.out arg1 arg2
              lami20j@debian:~/trash$ ./a.out arg1 arg2
              arg2 arg1
              
              1. Bonsoir lami20j,

                Merci pour votre réponse.

                Est ce que vous pouvez m'expilquer un peu le resultat de ce praogramme, ainsi que cette ligne :

                " printf ("°/.s : Usage '/,s <mot-l> <mot-2>\n", argv[0], argv[0]); "

                excusez_moi pour mes questions un peu débile, mais je débute en programmation c c'est pour cela je met tout en question :)

                Merci d'avance.
                1. Modérateur
                  Salut,

                  Tu as mis un l (L en minuscules) ou lieu de 1 (chiffre "UN")
                  lami20j@debian:~/trash$ cat vide.c
                  #include <stdio.h>
                  int main(int argc,char* argv[])
                  {
                    if(argc<3) {
                      printf ("°/.s : Usage '/,s <mot-l> <mot-2>\n", argv[0], argv[0]); return;
                    }
                    printf ("\ty,%ss\n\ty,,%ss\n",argv [2] ,argv[1]) ;
                    return 0;
                  }
                  lami20j@debian:~/trash$ gcc vide.c
                  lami20j@debian:~/trash$ ./a.out
                  °/.s : Usage '/,s <mot-l> <mot-2>
                  lami20j@debian:~/trash$ ./a.out azerty qwerty
                          y,qwertys
                          y,,azertys
                  
                  1. De ta part, je suis surpris:
                    printf ("°/.s : Usage '/,s <mot-l> <mot-2>\n", argv[0], argv[0]);, avec un 'gcc -Wall vide.c' ça râlerait sec !
                    Il doit y avoir une erreur de recopie quelque part... on le sent bien ;-)
                    Bonne soirée.
                  2. Modérateur
                    @loupiusSalut,

                    Oui, j'ai vu après.
                    J'ai fait un copier/coller ;-)
                2. je travail sur Linux (ubuntu).

                  je dois savoir ce que font ces commandes déja cité mais , on m'affiche ce message d'erreur :

                  "No manual entry for prog"

                  autre chose je dois commenter ce programme qcqu'il retourne comme resultat,

                  #include <stdio.h>
                  void main(int argc,char* argv[]) {
                  if(argc<3) {
                  printf ("°/.s : Usage '/,s <mot-l> <mot-2>\n", argv[0], argv[0]); return; }
                  printf ("\ty,s\n\ty„s\n",argv [2] ,argv[l]) ; }

                  mais par contre j'ai eu ce msg d'erreur en le compilant :
                  ex1td3.c: In function ‘main’:
                  ex1td3.c:5: erreur: ‘l’ undeclared (first use in this function)
                  ex1td3.c:5: erreur: (Each undeclared identifier is reported only once
                  ex1td3.c:5: erreur: for each function it appears in.)
                  ex1td3.c:2: attention : return type of ‘main’ is not ‘int’
                  1. Modérateur
                    Tu travailles sous windows ou Linux?

                    Tu as déjà lancé un programme en ligne de commande? Les systèmes possèdent généralement une fenêtre de commande (ou shell), un écran noir dans lequel tu peux taper des commandes.

                    Quand tu tapes une commande, tu lances un programme avec des arguments, comme ça:

                    nom_commande argument1 argument2

                    Hmm?
                    1. Bonsoir ,

                      Merci de m'avoir répondu.

                      SVP, pouvez vous mieux m'expliquer je débute en c et je rencontre bcp de pb, il ya des choses que je comprend comme :

                      "prog, prog fleur, prog fleur bouillie, prog fleur bouillie " ---> qcq ça signifie?

                      Merci d'avance.
                      1. Modérateur
                        Salut,

                        Indice: argc représente le nombre d'arguments passés en paramètres. Il y en a au moins un: le nom du programme qui est le paramètre par défaut.

                        Argv est le tableau de paramètres passés au programme.
                        Si tu tapes prog bidule argc vaudra 2 et argv[0] = "prog", argv[1] = "bidule"