Bonjour,
je débute en C et je bloque sur un exercice où je suis censée utiliser argc et argv.
Je dois coder une fonction printInfos qui affiches les arguments de la commande rentrée dans le terminal
(exemple :
argv[0] : './args'
argv[1] : 'coucou'
argv[2] : '-option'
argv [3] : '3.56 ')
le code de ma fonction est le suivant :
Quand j'insère directement ce bout de code dans mon main, j'obtiens bien le résultat attendu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int i; printf("Nombre d'arguments passés au programme : %d\n", argc); for (i=0 ; i<argc; i++){ printf(" argv[%d] : '%s'\argc", i, tab[i]); }
Sauf que quand je veux l'isoler pour en faire une fonction :
Que j'appelle ensuite dans le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void printInfos(int n, char * tab[n]){ int i; printf("Nombre d'arguments passés au programme : %d\n", n); for (i=0 ; i<n; i++){ //boucle parcourt la liste des arguments printf(" argv[%d] : '%s'\n", i, tab[i]); //affiche les arguments et leur position un par un } }
Le résultat change et j'obtient quelque chose du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int main (int argc, char * argv[]){ printInfos(argc, &argv[argc]); return EXIT_SUCCESS; }
Nombre d'arguments passés au programme : 6
argv[0] : '(null)'
argv[1] : 'TERM_PROGRAM=Apple_Terminal'
argv[2] : 'TERM=xterm-256color'
argv[3] : 'SHELL=/bin/bash'
argv[4] : 'TMPDIR=/var/folders/kv/d1bhz4pd39d0lqxm8l22346w0000gn/T/'
argv[5] : 'CONDA_SHLVL=1'
Est-ce que quelqu'un saurait m'aiguiller ?
(J'ai le même problème pour mes autres fonctions add et times qui sont censées ajouter et multiplier les arguments entre eux en fonction des options passées en commande,
mais qui ne marchent pas car apparemment aucun argument ne vaut "add" ou "times" même si je les écrit dans ma ligne de commande...)
Je ne sais pas si c'est très clair mais merci d'avance !![]()
Partager