Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 3
    Points : 0
    Points
    0

    Par défaut Chaines de caractères

    Je dois Ecrire une fonction qui reçcoit deux chaınes de caracteres et copie la premiere a la suite de la seconde. On utilisera la valeur de retour pour indiquer si la concatenation a ete
    possible. Si la place est insuffisante, on copie le maximum de caracteres possibles. Le tableau obtenu doit toujours etre une chaıne de caracteres.

    Je ne vois pas comment faire qui peut m'aider ?

  2. #2
    Membre éprouvé Avatar de Bayard
    Inscrit en
    juin 2002
    Messages
    676
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 676
    Points : 422
    Points
    422

    Par défaut

    Bonsoir,

    Il faut poster du code.
    Nous n'allons pas faire vos devoirs...

    Merci
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  3. #3
    Expert Confirmé Sénior
    Homme Profil pro Pierre
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    1 967
    Détails du profil
    Informations personnelles :
    Nom : Homme Pierre
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 1 967
    Points : 4 146
    Points
    4 146

    Par défaut

    Allons-y pour la lecture d'énoncé:

    "Je dois écrire une fonction"
    ? concatenation(???);
    " qui reçoit deux chaınes de caracteres"
    ? concatenation(char*, const char*);
    " et copie la premiere a la suite de la seconde."
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /*
    Concatene suite au bout de debut
    */
    ? concatenation(char* debut, const char* suite) {
        /*chercher fin de début*/
        char* fin = ?;/*je ne fais pas ton boulot*/
        /*copier suite*/
        /*code qui utilise fin et suite pour la copie*/
    }
    "On utilisera la valeur de retour pour indiquer si la concatenation a ete
    possible."

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /*
    Concatene suite au bout de début
    Retourne le nombre de caractère copiés en cas de succès, une valeur négative en cas d'erreur
    */
    int concatenation(char* debut, const char* suite) {
        /*chercher fin de début*/
        char* fin = ?;/*je ne fais pas ton boulot*/
        /*copier suite*/
        /*code qui utilise fin et suite pour la copie*/
        return ?;
    }
    "Si la place est insuffisante, on copie le maximum de caracteres possibles."
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /*
    concatene suite au bout de début
    Retourne le nombre de caractère copiés en cas de succès, une valeur négative en cas d'erreur
    */
    int concatenation(char* debut, const int taille_debut, const char* suite, const int taille_suite) {
    /* en cas d'erreur, retourner -1, ou n'importe quel négatif, qui servira de code d'erreur */
        /*chercher fin de début*/
        char* fin = ?;/*je ne fais pas ton boulot*/
        /*copier suite*/
        int taille_copiable = ?;/*nombre de caractère copiable*/
        /*code qui utilise taille_copiable, fin et suite pour la copie*/
        return taille_copiable;/*Si on arrive au bout de la fonction, tout est bon*/
    }
    "Le tableau obtenu doit toujours etre une chaıne de caracteres."
    confere ton cours sur la différence entre chaine de caractere et simple pointeur de caractere ou tableau de caractere

    Au cas ou ton cours ne parlerai pas de pointeur, ce qui me surprendrait, tu peux aussi utiliser des tableaux en argument, c'est strictement équivalent
    Code :
    int concatenation(char[] debut, const int taille_debut, const char[] suite, const int taille_suite)
    J'ai volontairement choisit de mettre les tailles constantes, parce qu'en C, un tableau possère une taille fixe.

    En cas de besoin, tu peux te renseigner sur les fonctions str* de la bibliothèque standard, et aussi lire notre FAQ.

    Pour l'information, tu dois coder une fonction qui serait plus ou moins strncat().

    J'espère que tu étais au moins arrivé à la même conclusion que moi.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • La plus sotte des questions est celle qu'on ne pose pas.

    Pour faire des graphes, essayez yEd.

  4. #4
    Expert Confirmé Sénior Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    23 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 23 920
    Points : 31 965
    Points
    31 965

    Par défaut

    Je ne vois pas trop l'intérêt de taille_suite ici.
    Hors considérations de performance (prématurées ici, donc la source du mal), la seule taille qui ne peut pas être obtenue par strlen, c'est la taille du buffer de destination.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Expert Confirmé Sénior
    Homme Profil pro Pierre
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    1 967
    Détails du profil
    Informations personnelles :
    Nom : Homme Pierre
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 1 967
    Points : 4 146
    Points
    4 146

    Par défaut

    Quand on débute, il vaut mieux prendre les bon réflexes.

    strlen ne donne pas la taille d'un tableau d'entier passé en argument.
    Par ailleurs, strlen ne donne pas la taille du tableau sous-jacent, mais de la valeur contenue.
    même si en effet, pour lire une chaine, on n'a pas besoin de cette taille.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • La plus sotte des questions est celle qu'on ne pose pas.

    Pour faire des graphes, essayez yEd.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •