Comment retourne-t-on une chaine de caractère en C ? [Résolu]

Messages postés
255
Date d'inscription
mercredi 15 juin 2005
Dernière intervention
15 mars 2007
- - Dernière réponse : tekila_bandita
Messages postés
255
Date d'inscription
mercredi 15 juin 2005
Dernière intervention
15 mars 2007
- 26 nov. 2005 à 18:49
Je débute et j'aimerais savoir commen faire pour retourné une chaine de caractère en C...
j'aimerais quelques exemples simples svp...

MERCI ! ;)
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Dernière intervention
11 janvier 2009
3
3
Merci
char * Fonction()

{

char Chaine[10] = "";

//...

//Traitement(s) sur la chaine de caractères.

//...

return Chaine;

}

J'espère que ça répond à ta question.


YOYO, @+.
YOYO

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 86 internautes nous ont dit merci ce mois-ci

Commenter la réponse de yoyo269
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
34
3
Merci
yoyo269 > Faire gaffe à ne pas transmettre nimporte quoi à ceux qui commencent, on ne concatène RIEN sur une constante.

En C on a l'habitude de recevoir le buffer destination, ça évite les fuites mémoire. On ne 'retourne' donc pas la chaine mais seulement un pointeur sur un buffer reçu.

char* MyConcat(char *psz, const char *chaine)
{
strcat(psz, chaine);
return psz;
}

char buf[60];
strcpy(buf, "Salut ");
MessageBox(0, MyConcat(buf, "la foule"), "OHE", 0);

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 86 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BruNews
Messages postés
707
Date d'inscription
mercredi 17 novembre 2004
Dernière intervention
29 septembre 2013
0
Merci
je ne comprend pas tout a fait ta question mais voici un petit exemple ca pourra peut etre t'aider



#include <stdio.h>

char buffer[256] //on fait une chaine de 256 caracteres



//affichage ce qu'il ya entre guillemets et saute une ligne

printf("que doit on mettre dans buffer:\n ");



//enregistrement de ce que l'on tape dans le buffer

gets(buffer);
.

//retour a l'ecran

printf("votre texte est: %s",buffer);





(si c'est bien ca alors il suffit en fait de mettre % et une lettre
puis fermer les guillemets et mettre une virgule puis sur quoi on doit
se baser, s'il y a plusieurs variable tu met plusieurs virgule et les
noms dans l'ordre ou ca doit paraitre)



%s = chaine de caractere

%c = char de juste une lettre

%d = int (decimal)

%x = octal (j'en suis plus sur de sa mais j'crois) c'est vachement bien pour convertir une chaine





voila si ca n'a pas repondu a ta question merci d'expliquer ce que tu
recherche vraiment et puis si c'est bon bein valide la reponse :)



c'est les principaux
Commenter la réponse de shadow1779
Messages postés
20
Date d'inscription
jeudi 24 novembre 2005
Dernière intervention
4 octobre 2008
0
Merci
D'apres ce que je comprend, tu veut savoir si une fonction peut retourner une chaine de caracteres ?
La reponse est non, du moin, pas de la maniere classique. Il faut faire un passage de parametres par adresse.
Exemple:

void FonctionChaine(char* chaine)
{
chaine = "nouvelle phrase"
}

main ()
{
char MaChaine[256] = "la belle phrase";

FonctionChaine(MaChaine);
}

Voila, apres appel a la fonction, ta chaine vaut "nouvelle phrase".
Commenter la réponse de Deeddolith
Messages postés
255
Date d'inscription
mercredi 15 juin 2005
Dernière intervention
15 mars 2007
0
Merci
Enfaite, par exemple, j'aimerais pouvoir créer une fonction de concaténationne requiérant que deux arguments : la chaine 1, et la chaine 2. La chaine 2 sera concaténée à la suite de la chaine 1 et la chaine reultante serai retourné par la fonction... je ne sais pas si c'est possible mais bon...

exemple :

printf("resultat : %s ", concat("hello", " !")) ;

voila !
j'espere avoir été clair...

Merci !
;)
Commenter la réponse de tekila_bandita
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Dernière intervention
11 janvier 2009
3
0
Merci
Oh que si c'est possible.
char c1 "chaine1", c2 "chaine2";
strcat(c1, c2);

Résultat : c1 = chaine1chaine2
T'as plus qu'à t'aider de ce qui t'as été donné et voilà.

YOYO, @+.
YOYO
Commenter la réponse de yoyo269
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Dernière intervention
11 janvier 2009
3
0
Merci
Merci de préciser BruNews !

YOYO, @+.
YOYO
Commenter la réponse de yoyo269
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Dernière intervention
17 septembre 2012
1
0
Merci
Salut,

yoyo, ce que tu dis est enorme et completement faux.

On ne peut pas retourner une variable locale, car celle ci est automatiquement détruite a la fin de l'execution de la fonction.

On ne peut pas faire "strcat(c1, c2);" sur deux chaines sauf si c1
contient assez d'espace libre pour contenir c2 (ce qui n'est pas le cas
dans ton exemple...).



Pour retourner une chaine d'une fonction, soit on alloue un buffer
dynamiquement avec malloc, soit on déclare un buffer local static, puis
on retourne l'adresse de ce buffer.
Commenter la réponse de cs_aardman
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
16
0
Merci
Oula! yoyo en a pris pour son grade!
Commenter la réponse de vecchio56
Messages postés
707
Date d'inscription
mercredi 17 novembre 2004
Dernière intervention
29 septembre 2013
0
Merci
vous tirez pas dessus non + lol :)
Commenter la réponse de shadow1779
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Dernière intervention
11 janvier 2009
3
0
Merci
LOL ! t'inquiètes shadow1779 !
C'est normal ce qu'ils ont dit, j'avais pas trop fait gaffe à ce que j'avais écrit.
Heureusement qu'ils m'ont corrigé.
Merci les gars.

YOYO, @+.
YOYO
Commenter la réponse de yoyo269
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Dernière intervention
5 avril 2008
2
0
Merci
Bof, ya pas mieu que strncat(), a si: vsprintf()
Commenter la réponse de juki_webmaster
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
34
0
Merci
Mieux pour amuser le processeur ?

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
255
Date d'inscription
mercredi 15 juin 2005
Dernière intervention
15 mars 2007
0
Merci
Merci bien, j'ai trouvé ma réponse...
Mais ce que je voulais c'était comment retourné une chaîne et non une fonction pour concaténer 2 chaines....

MERCI !
Commenter la réponse de tekila_bandita

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.