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 :

R�cup�rer un morceau d'une chaine par rapport � sa position dans la chaine


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Par d�faut R�cup�rer un morceau d'une chaine par rapport � sa position dans la chaine
    Bonjour.

    Avant toutes choses, sachez que je d�bute en C, �a peut �tre interessant � savoir

    Exemple illustrant mon probl�me :

    J'ai une cha�ne de caract�re type "aaaaaaabbbbbbbccdd" qui a toujours la meme longueur, mais ne contient pas tout le temps les m�mes caract�res.
    On pourrait avoir :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    char chaine = "bonjourcommentcava";
    Et j'aimerai r�cup�rer dans une structure d�finie chaque �l�ment de la chaine de caract�re ; c'est � dire "bonjour", "comment", "ca", "va" dans une partie de la structure.

    Voil� un bout de code que j'ai commenc� � �crire avant de rester bloqu� sur ce probleme :

    Soit la structure :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    struct ligne
    {
      char a;
      char b;
      char c;
      char d;
    };
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    strcpy(ligne.a, chaine(morceaudechaine)) ;
    strcpy(ligne.b, chaine(morceaudechaine)) ;
    strcpy(ligne.c, chaine(morceaudechaine)) ;
    strcpy(ligne.c, chaine(morceaudechaine)) ;
    o� chaine(morceaudechaine)) doit en fait correspondre non pas � la chaine compl�te mais seulement au morceau de chaine correspondant � "bonjour", "comment", "ca", "va".
    De sorte que
    ligne.a soit �gale � "boujour"
    ligne.b ******* � "comment"
    ...ainsi de suite.

    Comme je ne peux pas les r�cup�rer par rapport aux diff�rents caract�res de la chaine car ils ne seront pas toujours les m�mes, peut �tre faut il agir au niveau de leur position dans la chaine de caract�re, en demandant de r�cup�r� dans :
    ligne.a �gale le morceau de la chaine qui va de la position 0 � 6
    ligne.b ************************************* 6 � 13
    ...ainsi de suite.

    Si quelqu'un connait une fonction standard qui effectue cette op�ration, je suis preneur...sinon s'il y a un autre moyen, je l'attends avec impatience.

    S'il faut plus de pr�cision, je vous en apporterez volontiers.

    D'avance merci !

  2. #2
    Expert confirm�
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par d�faut
    D'une mani�re ou d'une autre, il te faut trouver un moyen de d�finir o� commence chaque partie dans la cha�ne � d�couper. Je vois les possibilit�s suivantes:
    • Chaque partie de ta chaine a une longueur d�finie
    • Tu utilises un s�parateur comme (virgule, espace (pour des mots), point (pour des phrases), caract�re de tabulation, nouvelle ligne, motif sp�cifique) pour distinguer les diff�rentes parties
    • Chaque partie commence par une lettre majuscule
    • etc.


    Sinon, difficile de savoir, � priori, comment d�couper "bonjourcommentcava".

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Par d�faut
    Citation Envoy� par mujigka
    • Chaque partie de ta chaine a une longueur d�finie
    Effectivement, chaque partie de la chaine a une longueur d�finie.
    Dans l'exemple, on a pour "boujour" 7 caract�res qui lui sont attribu�.
    Je me suis mal exprim�, mais quand j'ai d�crit la chaine �tant de type "aaaaaaabbbbbbbccdd" c'est ce que je voulais expliquer.
    Il y a 4 parties dans la chaine :
    aaaaaaa qui a une longueur de 7 caract�res
    bbbbbbb qui a une longueur de 7 caract�res
    cc qui a une longueur de 2 caract�res
    dd qui a une longueur de 2 caract�res
    On a pour chaque partie de la chaine une longueur d�finie qui ne varie pas.

    Soit dans l'exemple :
    7 caract�res pour bonjour
    7 pour comment
    2 pour ca
    2 pour va

    Donc on peut a priori jouer sur la longueur de chaque partie de la chaine.
    Mais je ne vois pas comment m'y prendre.
    Car il n'y a pas de s�parateur, ni de majuscule dans ma chaine de caract�re.

    J'esp�re que vous pouvez m'aider � trouver la solution.

    Merci d'avance !

  4. #4
    Membre �prouv�
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    86
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int ret = 0;
    struct ligne_
    {
      char  a[7+1];/*+1=le caractere fin de chaine*/
      char  b[7+1];
      char  c[2+1];
      char  d[2+1];
    }ligne;
     
    char * str = "aaaaaaabbbbbbbccdd";
     
    ret = sscanf(str,"%7s%7s%2s%2s",ligne.a,ligne.b,ligne.c,ligne.d);
    if(ret !=4)return -1;

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Par d�faut
    Ok, merci scriptoff.

    Je vais essayer �a.
    Par contre, pourrais je avoir une explication du code ?

    • Et si (oui j'en rajoute un peu ) les deux derniers "caract�res" �taient des r��ls, est-ce que sscanf() peut les lire aussi ?
    • Et si je veux r�cup�r� tous les �l�ments de la chaines sauf ceux en position "c".
      C'est � dire, au lieu de "aaaaaaabbbbbbbccdd", "aaaaaaabbbbbbbdd".
      Soit "boujour", "comment", "va".



    J'essai ce qu'on me propose en l'adaptant � mon code et je vous dis si cela a bien fonctionn�.

    Merci encore !

  6. #6
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Par d�faut
    J'effectue un double post (d�sol� ) pour dire que l'id�e du sscanf est effectivement une bonne solution pour r�soudre mon probl�me.
    Je vous remercie de m'avoir fournis cette solution.

    En revanche, il se trouve qu'il me serait utile de faire �voluer ma premi�re question vers celle que j'ai pos� ci avant :

    Les deux derniers "caract�res" �taient des r��ls, est-ce que sscanf() peut les lire aussi ?
    Je veux r�cup�r� tous les �l�ments de la chaines sauf ceux en position "c".
    C'est � dire, au lieu de "aaaaaaabbbbbbbccdd", "aaaaaaabbbbbbbdd".
    Soit "boujour", "comment", "va".

    R��mettons les hypoth�ses de d�parts plus adapt�s � ces questions :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct ligne
    {
      char a;
      char b;
      /*char c; --> on supprime cette élément de la structure*/
      int d; /* on a un int et non plus un char */
    };
     
    char * str = "aaaaaaabbbbbbbccdd";
    on veur r�cup�r� dans la structure juste les chaine :
    "aaaaaaa" dans ligne.a
    "bbbbbbb" dans ligne.b
    "dd" dans ligne.d

    Comment �crire le sscanf pour obtenir ce r�sultat ?

    J'esp�re que mes questions sont assez clairs et que vous pourrez fournir une aide b�n�fique � mon code

    Merci d'avance

  7. #7
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par MJfox
    Effectivement, chaque partie de la chaine a une longueur d�finie.
    Dans l'exemple, on a pour "boujour" 7 caract�res qui lui sont attribu�.
    Je me suis mal exprim�, mais quand j'ai d�crit la chaine �tant de type "aaaaaaabbbbbbbccdd" c'est ce que je voulais expliquer.
    Il y a 4 parties dans la chaine :
    aaaaaaa qui a une longueur de 7 caract�res
    bbbbbbb qui a une longueur de 7 caract�res
    cc qui a une longueur de 2 caract�res
    dd qui a une longueur de 2 caract�res
    On a pour chaque partie de la chaine une longueur d�finie qui ne varie pas.

    Soit dans l'exemple :
    7 caract�res pour bonjour
    7 pour comment
    2 pour ca
    2 pour va

    Donc on peut a priori jouer sur la longueur de chaque partie de la chaine.
    Mais je ne vois pas comment m'y prendre.
    Car il n'y a pas de s�parateur, ni de majuscule dans ma chaine de caract�re.

    J'esp�re que vous pouvez m'aider � trouver la solution.
    Une utilisation intelligente de strncat() permet de copier une sous-chaine d�finie par un offset et une longueur. Bien lire la doc.

    Evidemment, les tableaux de destination doivent �tre d'une taille suffisante (<= � la chaine originale, bien s�r...)

    Se rappeler qu'une chaine est termin�e par un 0...

  8. #8
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Par d�faut
    Bonjour.

    Vous voulez dire que je pourrais �crire quelque chose de la sorte :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    char *strncat (ligne.a, str, 7)
    Mais strncat ne copie que les n premiers caract�res de src a la fin de dest.
    Comment r�cup�rer les "bbbbbbb" de str dans ligna.b ? les "dd" dans ligne.d.
    Avec cette fonction je ne peux r�cup�rer que la chaine pour les "aaaaaaa".

    A moins que l'on supprime la m�me chose � la chaine str � chaque fois que l'on copie dans la structure ?
    Mais on perd la chaine de d�part, et cela peut �tre assez contraignant.


    Etayons un peu les hypoth�ses pour donner un peu plus de mati�res � ma question, car apparement, je ne suis pas assez clair dans mes explications.

    Imaginons :

    J'extrait d'un fichier une ligne de 100 caract�res de ce fichier.
    Je stock cette ligne dans une variable "str".
    Dans cette ligne/variable, une valeur A de 7 caract�res que l'on trouve en 25�me position et une de 2 caract�res en 46�me m'interesse.
    La valeur A sera un char.
    la valeur B sera un int.
    Comment r�cup�rer ces deux valeurs dans une structure (type lastructure comme d�finit au dessus) ?

    Peut �tre l'exemple pr�sent� comme ca explique mieux ce que je recherche ?


    PS :
    Pourquoi n'existe t'il pas une fonction :
    Recup(str,25-32,ligne.a)
    Recup(str, 46-48, ligne.d)

    Cela serait tellement plus simple...

  9. #9
    Membre Expert
    Inscrit en
    D�cembre 2004
    Messages
    1 478
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 478
    Par d�faut
    Citation Envoy� par MJfox
    Mais strncat ne copie que les n premiers caract�res de src a la fin de dest.
    Comment r�cup�rer les "bbbbbbb" de str dans ligna.b ? les "dd" dans ligne.d.
    Avec cette fonction je ne peux r�cup�rer que la chaine pour les "aaaaaaa".
    Tu te deplaces dans la chaine : c'est le moment de comprendre ce qu'est un pointeur.
    Tu as
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    char chaine[] = "bonjourcommentcava";
    chaine + 7 te place sur le c de comment.

  10. #10
    Expert confirm�
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par d�faut
    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
    /**
     * Récupère une sous-chaîne de n caractères depuis s_src[debut] et la copie
     * dans s_dest.
     *
     * @param s_dest tampon de destination dans lequel sera copié la chaine
     * @param s_src chaîne de caractères contenant la sous-chaine à copier
     * @param debut indice indiquant le début de la sous-chaîne à copier
     * @param n longueur de la sous chaine à copier
     * 
     * @pre debut doit être un entier compris entre 0 et strlen(s_src) - 1
     * @pre n doit être inférieur strictement à la taille de s_dest 
     */
    void Recup(char *s_dest, char const *s_src, int debut, int n)
    {
        strncat(s_dest, s_src + debut, longueur);
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  11. #11
    Membre chevronn�
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par d�faut
    Tu peux aussi utiliser sprintf.

    ex:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    sprintf(ligne.b,"%.7s",&chaine[7]);
    quoique sur ce type d'op�rations, strncat est plus appropri� (+performant).

  12. #12
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par mujigka
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /**
     * Récupère une sous-chaîne de n caractères depuis s_src[debut] et la copie
     * dans s_dest.
     *
     * @param s_dest tampon de destination dans lequel sera copié la chaine
     * @param s_src chaîne de caractères contenant la sous-chaine à copier
     * @param debut indice indiquant le début de la sous-chaîne à copier
     * @param n longueur de la sous chaine à copier
     * 
     * @pre debut doit être un entier compris entre 0 et strlen(s_src) - 1
     * @pre n doit être inférieur strictement à la taille de s_dest 
     */
    Attention, la chaine de destination doit �tre initialis�e :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    void Recup (char *s_dest, char const *s_src, size_t debut, size_t n)
    {
        *s_dest = 0;
        strncat(s_dest, s_src + debut, longueur);
    }
    Attention, si il y a trop de consignes d'utilisation, on a tendance � ne pas les lire ou � en ignorer certaines...

  13. #13
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Par d�faut
    Bonjour.

    Merci encore une fois de vos r�ponses !

    Merci pour la pr�cisions pour un pointer.
    Je comprend mieux le d�placement sur une chaine et pourquoi on peut utiliser strncat().

    Donc si je reprend ce qu'on me propose et si j'ai bien compris, je dois �crire si on reprend un exemple "de base" :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    struct ligne
    {
      char a;
      char c;
      int d;
    };
     
    char * str = "aaaaaaabbbbbbbccdd";
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    void Recup(char *s_dest, char const *s_src, int debut, int n)
    {
        *s_dest = 0;
        strncat(s_dest, s_src + debut, longueur);
    }
    Je dois appeler la fonction Recup ainsi :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    Recup (ligne.a, str, 0,7);
    Recup (ligne.c, str, 14,2);
    si je veux r�cuperer une des valeurs dans un int, j'�crirais :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    void Recup(int *s_dest, char const *src, int debut, int n)
    {   
        *s_dest = 0;
        strncat(ligne.d, str, 16,2)
    }
    o� peut-�tre ici faut t'il effectuer une conversion avant ?

    Suis je dans le bon ? Ou n'ai je encore pas tout compris ?

    Encore Merci de vos r�ponses.

  14. #14
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par MJfox
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    struct ligne
    {
      char a;
      char c;
      int d;
    };
    Je t'invite � relire mon post et notamment ceci :
    Citation Envoy� par -ed-
    Evidemment, les tableaux de destination doivent �tre d'une taille suffisante (<= � la chaine originale, bien s�r...)

    Se rappeler qu'une chaine est termin�e par un 0...

  15. #15
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Par d�faut
    Cela veut dire que je dois d�finir des tailles pour la structure ?
    Une taille correspondant au double de la chaine que je veux r�cup�rer au minimum ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    struct ligne
    {
      char a [100];
      char c [100];
      int d;
    };
    J'ai de gros doutes sur ma compr�hension � ce niveau l�...
    De m�me pour le z�ro, cela veut dire qu'il faut penser � mettre un caract�re en plus ?
    si ma chaine se voit comme "aaa", elle ne fait pas 3 mais 4 ? C'est cela que je dois comprendre ?

    Merci de encore de vos r�ponses.
    Notament de la mani�re de me les pr�senter en me laissant le soin d'y r�fl�chir.
    C'est tr�s formateur.

    NB : En revanche excusez moi de ma compr�hension limit�e...je suis vraiment d�butant en C. A savoir que c'est un langage que j'apprens "sur le tas" et que mes lacunes sont tr�s grandes.
    Comment ca je donne l'impression de me justifier ?

  16. #16
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par MJfox
    Cela veut dire que je dois d�finir des tailles pour la structure ?
    Ca veut dire que la copie de chaine se fait dans un tableau de char dont la taille doit �tre d�finie.

    Tu n'as peut �tre pas besoin de 100 char si la chaine d'origine en fait 20... Il faut apprendre � g�rer la notion de 'taille raisonnable'.
    Une taille correspondant au double de la chaine que je veux r�cup�rer au minimum ?
    Pourquoi ? La taille d'une sous-chaine a toutes les chances d'�tre <= � la chaine d'origine, non ? A moins que tu fasses des concat�nations, mais je n'ai pas entendu parler de �a dans ce post...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    struct ligne
    {
      char a [100];
      char c [100];
      int d;
    };
    J'ai de gros doutes sur ma compr�hension � ce niveau l�...
    De m�me pour le z�ro, cela veut dire qu'il faut penser � mettre un caract�re en plus ?
    Exactement.
    si ma chaine se voit comme "aaa", elle ne fait pas 3 mais 4 ? C'est cela que je dois comprendre ?
    Elle occupe 4 char. Ce sont les bases du C. Relire le chapitre sur les chaines de caract�res si tu as des doutes...
    Notament de la mani�re de me les pr�senter en me laissant le soin d'y r�fl�chir.
    C'est tr�s formateur.
    Merci, c'est mon m�tier...
    NB : En revanche excusez moi de ma compr�hension limit�e...je suis vraiment d�butant en C. A savoir que c'est un langage que j'apprens "sur le tas" et que mes lacunes sont tr�s grandes.
    Comment ca je donne l'impression de me justifier ?
    C'est un langage difficile qui demande rigueur et m�thode. On peut l'apprendre tout seul avec un livre. Ca m'a pris un an...

    Il y a des r�f�rences de livres et de tutoriels sur ce site et sur le mien.

  17. #17
    Membre Expert
    Inscrit en
    D�cembre 2004
    Messages
    1 478
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 478
    Par d�faut
    Citation Envoy� par Emmanuel Delahaye
    Attention, si il y a trop de consignes d'utilisation, on a tendance � ne pas les lire ou � en ignorer certaines...
    D'autant qu'on se demande d'ou vient cette mysterieuse variable longueur... J'imagine qu'il faut lire n.

  18. #18
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Par d�faut
    Bonjour.

    Oui effectivement je pense qu'il faut lire "n" et pas "longueur"

    Je vais donc prendre le temps d'analyser et de tester tous ces conseils.
    Une fois que j'aurai eu des r�sultats coh�rents, je reviendrais vous dire si tout c'est bien pass� et peut �tre mettre le sujet � l'�tat [r�solu].

    Merci encore.

  19. #19
    Expert confirm�
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par d�faut
    Citation Envoy� par Emmanuel Delahaye
    Attention, la chaine de destination doit �tre initialis�e :
    Bien s�r, j'avais la t�te ailleurs...
    Citation Envoy� par Emmanuel Delahaye
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    void Recup (char *s_dest, char const *s_src, size_t debut, size_t n)
    {
        *s_dest = 0;
        strncat(s_dest, s_src + debut, longueur);
    }
    Attention, si il y a trop de consignes d'utilisation, on a tendance � ne pas les lire ou � en ignorer certaines...
    Tu trouves que c'est trop? Je n'avais pas le temps de r�fl�chir aux tests ad�quats, d'o� les pr�-conditions.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  20. #20
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par mujigka
    Bien s�r, j'avais la t�te ailleurs...

    Tu trouves que c'est trop? Je n'avais pas le temps de r�fl�chir aux tests ad�quats, d'o� les pr�-conditions.
    Le temps que tu as pass� a expliquer comment utiliser la fonction (et � oublier l'essentiel) aurait �t�, � mon avis, mieux utilis� � �crire du code solide...

    Se reposer sur la doc, c'est d�l�guer la s�curit� au codeur... Ca peut tr�s mal se terminer si des vies sont en jeu... Je suis adepte de la programmation d�fensive.

    L'utilisateur doit se concentrer sur l'essentiel...

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. R�ponses: 5
    Dernier message: 24/02/2011, 13h22
  2. R�ponses: 3
    Dernier message: 01/06/2009, 18h21
  3. R�ponses: 8
    Dernier message: 15/11/2008, 23h14
  4. R�ponses: 5
    Dernier message: 29/08/2008, 18h01
  5. R�ponses: 7
    Dernier message: 08/03/2007, 16h42

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