A voir également:
- Arguments en c++?????
- List.append() takes no keyword arguments - Forum Python
- Vous avez entré un nombre trop important d'arguments pour cette fonction ✓ - Forum Excel
- Trop d'arguments sur une fonction Excel ?? - Forum Excel
- Les arguments de tableau de sumifs ne sont pas de la même taille. - Forum Excel
- Fonction SI sur excel avec plusieurs argument ✓ - Forum Excel
6 réponses
hallu,
Si tu parles des arguments passés à ton programme.
tu as :
main( int argc, char *argv[] )
{
// code
fopen(argv[1],"r");
// read
// etc ...
}
--> prog.exe
prog.exe D:/chemin/fic_conf.ini
Tu peux ainsi passer un fichier en argument que tu peux nommer comme tu veux et le placer où tu veux sur ta machine sans pour autant recompiler ton programme, c'est beaucoup plus souple non ???
Si tu parles des arguments passés à ton programme.
tu as :
main( int argc, char *argv[] )
{
// code
fopen(argv[1],"r");
// read
// etc ...
}
--> prog.exe
prog.exe D:/chemin/fic_conf.ini
Tu peux ainsi passer un fichier en argument que tu peux nommer comme tu veux et le placer où tu veux sur ta machine sans pour autant recompiler ton programme, c'est beaucoup plus souple non ???
main( int argc, char *argv[] )
sinifie que le main recoit un certains nombre (=argc) d'arguments (=argv)
donc les arguments sont argv[0] (niombre du programme lui même
argv[1] = 1er argument
...
argv[argc-1] = dernier argument
par exemple si ton prog s'appelele toto.exe
et que sous DOS tu tapes toto.exe titi tata tutu
alors dans le main:
argc=4
argv[0] => "toto.exe"
...
argv[3] => tutu
ATTENTION argv[i] plante sauvagement pour i<0 ou i>=argc (oui >= et pas > cmme l'erreur classique des débutants ...)
sinifie que le main recoit un certains nombre (=argc) d'arguments (=argv)
donc les arguments sont argv[0] (niombre du programme lui même
argv[1] = 1er argument
...
argv[argc-1] = dernier argument
par exemple si ton prog s'appelele toto.exe
et que sous DOS tu tapes toto.exe titi tata tutu
alors dans le main:
argc=4
argv[0] => "toto.exe"
...
argv[3] => tutu
ATTENTION argv[i] plante sauvagement pour i<0 ou i>=argc (oui >= et pas > cmme l'erreur classique des débutants ...)
le truc que je compren pas c'est aussi pq tu as un* c'est le signe d'un pointeur ??Si tu voudrais me montrer une demonstration d'un programme sans les "abréviation argc argv peut-être que je comprendrai mieux.
Mais tu m'as toujours pas dis, où est-ce que l'on place?
Merci pour ta patience.
Mais tu m'as toujours pas dis, où est-ce que l'on place?
Merci pour ta patience.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je croais que au debut je me suis tromper, je voualsi demander a quoi sert les paramètre. Mais si tu en a le courage, j'aimerais que tu m'explique quand même les arguments lol
c'est pas bien sorcier.
Exemple :
quand tu veux écrire un fichier sous Linux par ex, avec vim (éditeur de text) et bien pour ouvrir un fichier tu lance la cmd :
vim mon_fichier.txt
vim, c'est le nom du programme donc argv[0]
mon_fichier.txt, c'est l'argument que l'on passe à vim pour qu'il puisse ouvrir le fichier voule et c'est argv[1].
ce qui fait que argc=2;
=> l'argument "0" argv[0] "le nom du prog"
=> l'argument "1" argv[1] "le paramètre que tu file à ton prog"
voici un petit code :
----------------------------------------------
#include <stdio.h>
int main(int argc, char **argv){
// argc c'est un entier qui va servir à compter le nombre de
// paramètres que tu passe à ton prog
// argv est un pointeur de pointeur tu peut aussi le noter de la
// façon suivante "char argv[][]". En réalité ça représentera
// un tableau à deux dimension qui contiendra les paramètres les
// uns à la suites des autres. Comme on ne peut pas savoir
// d'avance la longueur des arguments et le nombre, c'est
// pourquoi on utilise les pointeurs de pointeurs.
int i;
printf("\nnombre d'arguments : %d", argc);
printf("\nnom du programme : %s\n", argv[0]);
for(i=1 ; i<argc ; i++){
printf("argument %d : %s\n", i, argv[i]);
}
return 0;
}
---------------------------------
execution du programme nomée prog1.exe :
prog1.exe bonjours comment ca va
nombre d'arguments : 5
nom du programme : prog1.exe
argument 1 : bonjours
argument 2 : comment
argument 3 : ca
argument 4 : va
-----------------------------------------------
donc en comptant le nom du programme comme argument 0, on a bien 5 arguments.
J'espère que ça t'aura aidé.
Bonne chance et mail moi si tu as des questions.
josch83
schmidt.joachim.devel@bluewin.ch
Exemple :
quand tu veux écrire un fichier sous Linux par ex, avec vim (éditeur de text) et bien pour ouvrir un fichier tu lance la cmd :
vim mon_fichier.txt
vim, c'est le nom du programme donc argv[0]
mon_fichier.txt, c'est l'argument que l'on passe à vim pour qu'il puisse ouvrir le fichier voule et c'est argv[1].
ce qui fait que argc=2;
=> l'argument "0" argv[0] "le nom du prog"
=> l'argument "1" argv[1] "le paramètre que tu file à ton prog"
voici un petit code :
----------------------------------------------
#include <stdio.h>
int main(int argc, char **argv){
// argc c'est un entier qui va servir à compter le nombre de
// paramètres que tu passe à ton prog
// argv est un pointeur de pointeur tu peut aussi le noter de la
// façon suivante "char argv[][]". En réalité ça représentera
// un tableau à deux dimension qui contiendra les paramètres les
// uns à la suites des autres. Comme on ne peut pas savoir
// d'avance la longueur des arguments et le nombre, c'est
// pourquoi on utilise les pointeurs de pointeurs.
int i;
printf("\nnombre d'arguments : %d", argc);
printf("\nnom du programme : %s\n", argv[0]);
for(i=1 ; i<argc ; i++){
printf("argument %d : %s\n", i, argv[i]);
}
return 0;
}
---------------------------------
execution du programme nomée prog1.exe :
prog1.exe bonjours comment ca va
nombre d'arguments : 5
nom du programme : prog1.exe
argument 1 : bonjours
argument 2 : comment
argument 3 : ca
argument 4 : va
-----------------------------------------------
donc en comptant le nom du programme comme argument 0, on a bien 5 arguments.
J'espère que ça t'aura aidé.
Bonne chance et mail moi si tu as des questions.
josch83
schmidt.joachim.devel@bluewin.ch