p
u
b
l
i
c
i
t
é
publicité
  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
    677
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 677
    Points : 472
    Points
    472

    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
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    3 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : juin 2007
    Messages : 3 257
    Points : 8 424
    Points
    8 424

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

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

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

    Informations forums :
    Inscription : septembre 2005
    Messages : 24 807
    Points : 35 957
    Points
    35 957

    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
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    3 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : juin 2007
    Messages : 3 257
    Points : 8 424
    Points
    8 424

    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.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Crypter une chaine de caractères
    Par Yabo dans le forum Réseau
    Réponses: 18
    Dernier message: 19/11/2004, 23h04
  3. Réponses: 9
    Dernier message: 17/01/2003, 11h45
  4. Lire Une Chaine De Caractères
    Par Jonathan_Korvitch dans le forum C
    Réponses: 12
    Dernier message: 07/01/2003, 05h37
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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