Copier char* in char ** et l'afficher
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:
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:
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