Bonjour,
j'aimerait inserer dans un char * toute les options entrées par l'uilisateur du type ./nom_prog -a -abc en faisant un vérification au prealable.
ce que le programme m'affiche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 int get_nb_optargs(int argc, char **argv) { int i; int nb_args; i = 1; nb_args = 0; while (i < argc) { if (argv[i][0] == '-') nb_args = nb_args + my_strlen(argv[i] + 1); i = i + 1; } return (nb_args); } int check_opt(char *opt, char to_find) { int i; int ret; ret = 1; i = 0; while (opt[i] != '\0') if (opt[i] == to_find) ret = 0; return (ret); } char *add_opt(char *opt, char to_add) { int i; i = my_strlen(opt); *(opt + i) = to_add; *(opt + i + 1) = '\0'; return (opt); } char *get_optargs(int argc, char **argv) { int i; int iargs; int nb_args; char *opt; my_put_nbr(get_nb_optargs(argc, argv)); my_putchar('\n'); opt = malloc(50 * sizeof(char)); i = 1; while (i < argc) { if (argv[i][0] == '-') { iargs = 1; while (argv[i][iargs] != '\0') { printf("%c\n", argv[i][iargs]); if (check_opt(opt, argv[i][iargs])) { opt[my_strlen(opt)] = argv[i][iargs]; opt[my_strlen(opt) + 1] = '\0'; } printf("opt = %s \n", opt); iargs = iargs + 1; } } i = i + 1; } return (opt); }
Apparament la boucle se stoppe pour une raison que je ne comprend pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 david@david-nux ~/Projets_C/my_ls $ ./a.out -opr -o -k -ll nb_pathargs = 0 7 o opt = o p
Aurais-je commit une boulette?
Partager