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:

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);
}
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
#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);
    }
}
Merci de votre aide