Pb commande Prog en c

Résolu/Fermé
cotta Messages postés 294 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 3 mai 2010 - 11 oct. 2009 à 17:33
cotta Messages postés 294 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 3 mai 2010 - 11 oct. 2009 à 21:23
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.

13 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
11 oct. 2009 à 17:59
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"
0
cotta Messages postés 294 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 3 mai 2010 3
11 oct. 2009 à 18:45
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.
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
11 oct. 2009 à 19:16
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?
0
cotta Messages postés 294 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 3 mai 2010 3
11 oct. 2009 à 19:21
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’
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 oct. 2009 à 19:29
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
0
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.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569 > loupius
11 oct. 2009 à 19:49
Salut,

Oui, j'ai vu après.
J'ai fait un copier/coller ;-)
0
cotta Messages postés 294 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 3 mai 2010 3
11 oct. 2009 à 19:37
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.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 oct. 2009 à 19:53
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
0
cotta Messages postés 294 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 3 mai 2010 3
11 oct. 2009 à 19:58
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
0
cotta Messages postés 294 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 3 mai 2010 3
11 oct. 2009 à 20:01
Puorquoi on lance l'éxecutable avec deux paramétres :

cotta@cotta-laptop:~/Bureau$ ./a.out azerty qwerty
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 oct. 2009 à 20:04
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

0
cotta Messages postés 294 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 3 mai 2010 3
11 oct. 2009 à 20:32
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.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 oct. 2009 à 20:46
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.
0
cotta Messages postés 294 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 3 mai 2010 3
11 oct. 2009 à 21:23
problem resolu.

Merci a tous.

bn soirée.

@cotta

:)
0