Partage
  • Partager sur Facebook
  • Partager sur Twitter

Copier char* in char ** et l'afficher

Sujet résolu
    25 octobre 2019 à 9:58:01

    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:

    #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:

    #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

    :

    • Partager sur Facebook
    • Partager sur Twitter
      25 octobre 2019 à 10:47:53

      Bonjour,

      tu dis : j'ai "12+3*6" je veux que array[0] = 12, array[1] = 3, et array[2] = 6

      tu ne veux pas plutot dire :

      j'ai "12+3*6" je veux que array[0] = "12", array[1] = "3", et array[2] = "6"

      Si c'est la première proposition qui est la bonne, la déclaration de ton array est fausse.

      • Partager sur Facebook
      • Partager sur Twitter
        25 octobre 2019 à 10:51:50

        Bonjour,

        Oui c'est la deuxieme proposition: j'ai "12+3*6" je veux que array[0] = "12", array[1] = "3", et array[2] = "6"

        je me suis trompe dans mon post

        • Partager sur Facebook
        • Partager sur Twitter

        Copier char* in char ** et l'afficher

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown