IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Petit problème de code ( signification)


Sujet :

C

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 40
    Points : 17
    Points
    17
    Par défaut Petit problème de code ( signification)
    Bonsoir , j'ai un programme dont je ne comprend pas certain code si quelqu'un pourrait m'aider merci d'avance ,j'ai mis en rouge tout ce qui ne va pas
    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
    char **strsplit(const char *s, const char sep){
        if(s==NULL)
            return NULL;
        int nbsep=0; /* nb de séparateurs */
        int j;
        for( j=0;s[j]!='\0';j++){
            if (s[j]==sep)
                nbsep++;
        }
        //printf("nbsep = %d\n",nbsep);
        char **res=malloc((nbsep+2)*sizeof(char*)); /* allocation du résultat */
        int n=0;
        int i=0;
        int APRESSEP=0; /* faux */
        do{
            int l=0;
            // lng de la sous-chaîne
            while(s[i]!='\0' && s[i]!=sep){
                l++;
                i++;
            }
            res[n]=malloc(l+1); // je ne comprend pas ce que malloc fait ici (res[n] est un tableau ?)
            strncpy(res[n], s+i-l, l);
            res[n][l]='\0'; // res[n][l] sa signifie quoi svp 
            n++;
            APRESSEP=0;
            if(s[i]==sep){
                i++;
                APRESSEP=1;
            }
        } while(s[i]!='\0');
        if(APRESSEP){ /* sep suivi de fin de chaîne */
            //printf("n=%d ; i=%d\n",n,i);
            res[n]=malloc(1);
            res[n][0]='\0';
            n++;
        }
        res[n]=NULL;
        return res;
    }

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Citation Envoyé par Marwaa45 Voir le message
    Bonsoir , j'ai un programme dont je ne comprend pas certain code si quelqu'un pourrait m'aider merci d'avance ,j'ai mis en rouge tout ce qui ne va pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        char **res=malloc((nbsep+2)*sizeof(char*)); /* allocation du résultat */
           res[n]=malloc(l+1); // je ne comprend pas ce que malloc fait ici (res[n] est un tableau ?)
            strncpy(res[n], s+i-l, l);
            res[n][l]='\0'; // res[n][l] sa signifie quoi svp 
     }
    Pour répondre à tes deux questions (qui vont ensembles), res est l'adresse de l'adresse d'un char. Donc res[x] sera l'adresse d'un char et res[x][y] sera un char
    On commence par allouer une zone capable de stocker "nnsep+2" adresses. Puis on boucle sur chacune de ces "nbsep + 2" adresses et à chaque res[x] on alloue "l + 1" char. On peut donc enfin taper sur les char placés en position res[x][y].
    Ce qui donne un truc qui se comportera exactement comme un tableau 2D. D'où l'analogie "étoile étoile" = 2D.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 40
    Points : 17
    Points
    17
    Par défaut
    Merci beaucoup pour ta réponse

Discussions similaires

  1. [XL-2003] Petit problème de code
    Par jackall dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/07/2009, 11h24
  2. Petit problème avec code checkbox
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/04/2008, 16h01
  3. Petit problème avec un code : besoin de votre aide :)
    Par loicdu4000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/09/2006, 18h02
  4. [Conception] Petit problème de code de confirmation.
    Par lorry1993 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/08/2006, 13h18
  5. Problème de code besoin d un petit depannage
    Par rakengoule dans le forum MFC
    Réponses: 3
    Dernier message: 10/10/2005, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo