Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Débuter
Débuter Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/12/2012, 18h39   #1
nn888787
Invité de passage
 
Inscription : décembre 2012
Messages : 1
Détails du profil
Informations forums :
Inscription : décembre 2012
Messages : 1
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 ?
nn888787 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 19h33   #2
Bayard
Membre éprouvé
 
Avatar de Bayard
 
Inscription : juin 2002
Messages : 670
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 670
Points : 416
Points : 416
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.
Bayard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 10h20   #3
leternel
Expert Confirmé
 
Homme Pierre
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 1 348
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 348
Points : 2 847
Points : 2 847
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.
leternel est déconnecté   Envoyer un message privé Réponse avec citation 21
Vieux 21/12/2012, 20h25   #4
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 490
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

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

Informations forums :
Inscription : septembre 2005
Messages : 22 490
Points : 32 264
Points : 32 264
Envoyer un message via MSN à Médinoc
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.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/12/2012, 15h16   #5
leternel
Expert Confirmé
 
Homme Pierre
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 1 348
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 348
Points : 2 847
Points : 2 847
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.
leternel est déconnecté   Envoyer un message privé Réponse avec citation 11
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h26.


 
 
 
 
Partenaires

Hébergement Web