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

tekila_bandita 255 Messages postés mercredi 15 juin 2005Date d'inscription 15 mars 2007 Dernière intervention - 25 nov. 2005 à 18:19 - Dernière réponse : tekila_bandita 255 Messages postés mercredi 15 juin 2005Date d'inscription 15 mars 2007 Dernière intervention
- 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
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 25 nov. 2005 à 18:38
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

Merci yoyo269 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de yoyo269
Meilleure réponse
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 25 nov. 2005 à 19:24
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++

Merci BruNews 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de BruNews
shadow1779 707 Messages postés mercredi 17 novembre 2004Date d'inscription 29 septembre 2013 Dernière intervention - 25 nov. 2005 à 18:27
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
Deeddolith 20 Messages postés jeudi 24 novembre 2005Date d'inscription 4 octobre 2008 Dernière intervention - 25 nov. 2005 à 18:37
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
tekila_bandita 255 Messages postés mercredi 15 juin 2005Date d'inscription 15 mars 2007 Dernière intervention - 25 nov. 2005 à 18:42
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
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 25 nov. 2005 à 18:45
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
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 25 nov. 2005 à 19:27
0
Merci
Merci de préciser BruNews !

YOYO, @+.
YOYO
Commenter la réponse de yoyo269
cs_aardman 1905 Messages postés mercredi 22 janvier 2003Date d'inscription 17 septembre 2012 Dernière intervention - 25 nov. 2005 à 19:29
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
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 25 nov. 2005 à 19:45
0
Merci
Oula! yoyo en a pris pour son grade!
Commenter la réponse de vecchio56
shadow1779 707 Messages postés mercredi 17 novembre 2004Date d'inscription 29 septembre 2013 Dernière intervention - 25 nov. 2005 à 20:10
0
Merci
vous tirez pas dessus non + lol :)
Commenter la réponse de shadow1779
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 25 nov. 2005 à 20:28
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
juki_webmaster 947 Messages postés mercredi 19 novembre 2003Date d'inscription 5 avril 2008 Dernière intervention - 25 nov. 2005 à 23:34
0
Merci
Bof, ya pas mieu que strncat(), a si: vsprintf()
Commenter la réponse de juki_webmaster
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 25 nov. 2005 à 23:46
0
Merci
Mieux pour amuser le processeur ?

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Commenter la réponse de BruNews
tekila_bandita 255 Messages postés mercredi 15 juin 2005Date d'inscription 15 mars 2007 Dernière intervention - 26 nov. 2005 à 18:49
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.