Bonjour,
J'aimerais réaliser une fonction qui permet de découper une chaine de caractère en mots à l'aide d'un double tableau. J'ai besoin de celle ci pour réaliser un mini shell mais elle n'est pas opérationnelle et j'aurais besoin que vous m'éclairciciez sur mon code.
Le problème que j'ai ici est que la valeur de d est le nombre de caractère à afficher alors que ca devrait etre le nombre de parametres et si je met plusieurs parametres à mon programme ces derniers se retrouvent dans la premiere case du double tableau. Dans l'absolu j'ai bien compris que le programme ne changeait pas de case de tableau mais je ne comprend pas pourquoi...
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 int count_words(char *str) { int a; int t; a = 0; t = 1; while (str[a] != '\0') { if ((str[a] == ' ' || str[a] == ':') && str[a + 1] != '\0') { while (str[a] == ' ' || str[a] == ':') a++; t = t + 1; } a = a + 1; } return (t); } char **my_str_to_wordtab(char *str) { t_var flop; char **res; int d; flop.u = 0; flop.i = 0; flop.s = 0; flop.a = 0; res = malloc(sizeof(*res) * my_strlen(str)); while (flop.i < my_strlen(str)) res[flop.i++] = malloc(sizeof(**res) * count_words(str)); while (str[flop.s]) { while (str[flop.s] != ' ' && flop.s < my_strlen(str)) { if (str[flop.s] == '\n') { return (res); } res[flop.a][flop.u++] = str[flop.s++]; } if ((str[flop.s + 1] == ' ')) { res[flop.a][flop.u + 1] = '\0'; flop.a = flop.a + 1; flop.u = 0; } flop.s = flop.s + 1; } d = 0; while (res[d]) // je fais ici quelques tests { my_putstr(res[d]); my_putchar('\n'); d++; } my_put_nbr(d); return (res); }
Merci d'avance pour votre aide.
Cdt
Partager