PDA

Voir la version complète : aide langage c


minen
29/12/2006, 01h19
j'ai un probleme en c qui peut m'expliquer ce que fait cette instruction en rouge

int main(int argc, char *argv[ ]){
if (argc != 3)
printf ("Mauvais nombre d'arguments.\n");
printf("\nUsage: %s int int\n" argv[0]);
...........
...........

merci

minen
29/12/2006, 01h23
personne pour m'aider?? svp c urgent :22:

dd1
29/12/2006, 01h26
olala je m'y connais pas en info desolee...mais tu aurais du poster ton post sur le topic special informatique je penses...

minen
29/12/2006, 01h27
bonsoir dd1,

ou ça special informatique??

je crois que je risque pas d'avoir des reponse a une heure pareil :22:

hakkimm
29/12/2006, 01h40
bonsoir minen
int main(int argc, char *argv[ ]){
if (argc != 3)
printf ("Mauvais nombre d'arguments.\n");
printf("\nUsage: %s int int\n" argv[0]);

Cela veut dire que ton programme ne s'exécute que lorsque le nombre des arguments est de deux style:

programme.exe argument1 argument2

sinon il n'exécutera que les deux "printf" comprise dans le "IF"
"Mauvais nombre d'arguments."
"programme.exe int int"

argc est un entier qui compte le nombre de chaînes de caractères, séparées par un ou plusieurs blanc (espace ou tabulation), dans la ligne de commande. Le nom de la commande est donc inclu dans le compte de la variable argc. Une commande shell sans argument aura donc un argc = 1.

argv est un pointeur sur un tableau de pointeurs sur des chaînes de caractères, celles-ci correspondant à celles tapées sur le clavier. Chaque pointeur du tableau pointe sur le début des chaînes respectives. Le tableau est terminé par un pointeur nul indiquant qu'il n'y a plus d'arguments.

Free
29/12/2006, 01h44
Bonsoir Minen,

en fait l'instruction en rouge decrit a l'utilisateur au cas ou ce dernier n'aurait pas utilise le nombre d'arguments requis, l'usage normal du programme en question.
Prenons un exemple: je ne connais pas le nom de ton programme, nous allons donc tout simplement l'appeler "prog". Apparemment, l'usage normal serait qu'il soit suivi de 2 entiers lors de son appel, mais supposons que l'utilisateur se trompe et le fasse suivre d'un seul entier:

prog 35

alors le nombre d'arguments seraient different de 3, et le programme affichera le message d'erreur suivant:

Mauvais nombre d'arguments.
Usage: prog int int


J'espere que j'ai ete clair. Si t'as d'autres questions, n'hesite pas, je ne vais pas me coucher de suite...

minen
29/12/2006, 01h46
merci a vous voila le code

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int a, b;

if (argc != 3)
{
printf("\nErreur : nombre invalide d'arguments");
printf("\nUsage: %s int int\n",argv[0]);
return(EXIT_FAILURE);
}
a = atoi(argv[1]);
b = atoi(argv[2]);
printf("\nLe produit de %d par %d vaut : %d\n", a, b, a * b);
return(EXIT_SUCCESS);
}

Free
29/12/2006, 01h48
lol, j'ai vu que Hakim m'a precede, je ne suis donc pas le seul informaticien insomniaque... ;)

minen
29/12/2006, 01h50
free: merci et welcome :71:

hakim: merci :4:

je crois que j'ai compris c les int balancé au milieu qui m'ont ...... :sad:

Free
29/12/2006, 01h50
Minen, tu as d'autres questions?

minen
29/12/2006, 01h51
je sais que je suis embetante :redface:

argv[0] contiendra quoi???

dd1
29/12/2006, 01h53
Ben tu vois finalement tu as eu des reponses :) meme a cette heure ci lol ;)

minen
29/12/2006, 01h54
oui lol :mrgreen:

hakkimm
29/12/2006, 01h58
argv[0]: contiendra le nom de ton programme exécutable
argv[1]: le 1er argument sous forme de chaine de caractère.
argv[2]: le 2ème argument sous forme de chaine de caractère.

L'instruction "atoi" permet de les convertir en "int"

minen
29/12/2006, 02h02
merci merciiiiiiiiiiiiiiii :twark:

minen
29/12/2006, 02h04
heu autre chose :redface:

la fonction atoi se trouve dans stdlib???

minen
29/12/2006, 13h17
SVP que fait celle là??

int l_mini=(strlen(str1)<strlen(str2)?strlen(str1):strlen(str2))

hakkimm
29/12/2006, 15h15
@minen, salam
strlen: Calcul le nombre de caractères dans une chaine (c.à.d la longueur de la chaine de caractères) et renvois un entier.

int l_mini=(strlen(str1)<strlen(str2)?strlen(str1):strlen(str2))
Cette instruction est l'équivalente de celle-là:

if strlen(str1)<strlen(str2)
l_mini=strlen(str1)
else
l_mini=strlen(str2);

On cherche la longeur de chaine de caractères la plus courte.

minen
31/12/2006, 13h47
merci pour tes reponses ;)