Bonjour,
Comme vous pouvez le voir dans le titre du sujet j'aimerais copier un char * dans un char ** et l'afficher. Exemple, j'ai "12+3*6" je veux que array[0] = 12, array[1] = 3, et array[2] = 6. donc à chaque ligne du double tableau je stock un nombre.
J'ai d'abbord malloc mon double tableau puis j'essais copier mes data à l'intérieur.
Voici mon code:
voici mon code, et je vous affiche ne dessous les functions comme display_char:
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 #include "my.h" #include "evalexpr.h" #include <stdlib.h> #include <stdio.h> char **malloc_number(char *str) { char **array; int j = 0; int size_c = 0; int size_lastnb = cal_lasttnb(str) - 1; for (int i = 0; str[i] != '\0'; i++) { if (my_alpha_operator(str[i]) == 1) j++; } j += 1; array = malloc(sizeof(char *) * (j + 1)); j = 0; for (int i = 0; str[i] != '\0'; i++) { if (my_alpha_operator(str[i]) == 1) { array[j] = malloc(sizeof(char) * (size_c + 1)); j++; size_c = 0; } else size_c += 1; } array[j + 1] = malloc(sizeof(char) * size_lastnb); return (array); } char **parsing_number(char *str) { char **array_nb = malloc_number(str); int size_l = 0; int c = 0; for (int i = 0; str[i] != '\0'; i++) { if (my_alpha_operator(str[i]) == 0) { array_nb[size_l][c] = str[i]; c++; } else { size_l++; c = 0; } } return (array_nb); } int eval_expr(char const *str) { char **array_number = parsing_number(str); display_char(array_number); free(array_number); }
Merci de votre aide
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 #include "my.h" #include <stdlib.h> int my_alpha_operator(char c) { if (c == '*' || c == '/' || c == '%' || c == '+' || c == '-') return (1); return (0); } int cal_lasttnb(char *str) { int size_str = my_strlen(str); int i = 0; while (size_str != 0) { if (my_alpha_operator(str[size_str]) == 1) return (i); i++; size_str--; } return (0); } void display_char(char **str) { for (int l = 0; str[l] != NULL; l++) { for (int i = 0; str[l][i] != '\0'; i++) { my_putchar(str[l][i]); } my_putchar(10); } }
Partager