Comment renvoyer une chaine dans une fonction ?

Comment renvoyer une chaine dans une fonction ? - C++ - Programmation

Marsh Posté le 31-05-2002 à 11:35:50    

Bon, tout est dans le titre ou presque : il me faut une fonction qui ne prend rien en paramètre et renvoie une chaine, genre une fonction de saisie. Le mieux que je puisse faire pour l'instant c'est renvoyer un caractère, ce qui est bien mais pas top.
 
Donc si une bonne âme pouvait simplement m'indiquer le prototypage, l'appel et la façon de renvoyer (pointeur sur une chaine, adresse ?) ca relancerait le schmilblick...
 
Merci d'avance...

Reply

Marsh Posté le 31-05-2002 à 11:35:50   

Reply

Marsh Posté le 31-05-2002 à 12:26:56    

précise ton langage de prog et explique toi un peu mieux, c'est franchement pas clair.
 
tu veux une fonction qui te renvoit une chaine aléatoire, une chaine saisie par l'utilisateur, autre chose ???


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 31-05-2002 à 12:32:43    

si c'est en C, alors:
 
prototype : char* fnc(void)
 
puis dans le main :  char tableau[30];
                     tableau = fnc();
 
et enfin, dans la fcn : char chaine[30];
                        fgets(stdin,30,chaine);
                        return chaine;
 
voilà, je crois que ça doit être à peu près bon !

Reply

Marsh Posté le 31-05-2002 à 13:23:50    

torpe23 a écrit a écrit :

si c'est en C, alors:
 
prototype : char* fnc(void)
 
puis dans le main :  char tableau[30];
                     tableau = fnc();
 
et enfin, dans la fcn : char chaine[30];
                        fgets(stdin,30,chaine);
                        return chaine;
 
voilà, je crois que ça doit être à peu près bon !  




 
AHHHHHHHHHHHHHHHHHHHHHHHH quelle horreur !!!
 

Code :
  1. int main()
  2. {
  3. char* chaine=NULL;
  4. /* Traitement */
  5. chaine=fct();
  6. if (chaine == NULL) return -1;
  7. ...
  8. /* Fin */
  9. free(chaine);
  10. return 1; /* ou 0, je ne sais plus */
  11. }
  12. char* fct(void)
  13. {
  14. char* chaine_tmp=NULL;
  15. /* Initialisation */
  16. chaine_tmp=(char*)malloc(sizeof(char) * longueur_que_tu_veux);
  17. if (chaine_tmp == NULL) return NULL;
  18. /* Traitement */
  19. ...
  20. /* Fin */
  21. return chaine_tmp;
  22. }

 

[jfdsdjhfuetppo]--Message édité par DarkOli le 01-06-2002 à 12:01:41--[/jfdsdjhfuetppo]


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 31-05-2002 à 15:43:06    

ouais, ça va ! j'ai fait ça vite fait, hein ! mais l'idée était là quand même !

Reply

Marsh Posté le 31-05-2002 à 15:46:05    

torpe23 a écrit a écrit :

ouais, ça va ! j'ai fait ça vite fait, hein ! mais l'idée était là quand même !  




 
Ben le problème c'est que tu crées un tableau pour ensuite l'écraser avec le résultat de la fonction, donc c'est pas génial !!!


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 31-05-2002 à 23:40:28    

c'est vrai mais sur le coup, j'y ai pas trop fait attention !... dsl !

Reply

Marsh Posté le 01-06-2002 à 00:09:21    

yep c'est clair au moins y a pas de leak :p

Reply

Marsh Posté le 01-06-2002 à 12:04:38    

DarkOli a écrit a écrit :

 

Code :
  1. ...
  2. chaine_tmp=(char*)malloc(sizeof(char) * longueur_que_tu_veux + 1);
  3. ...

 




 
Oups, j'avais oublié le '+1' pour le '\0' !!!
Exemple : 'toto' est chaîne de longueur 4 mais utilise 5 caractères en mémoire (un pour le caractère '\0' qui indique la fin de la chaîne !!!)


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 01-06-2002 à 13:55:06    

S'il vous plait : précédez le titre des post par le langage :  
ex: : [C] Comment renvoyer une chaine dans une fonction ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 01-06-2002 à 13:55:06   

Reply

Marsh Posté le 03-06-2002 à 08:47:28    

merci beaucoup, ca marche tres bien tout ca...  :jap:  
 
(Je n'ai pas mis la balise [C], car posté dans la sous catégorie C C++, dsl si du coup le post prete à confusion.)
 
Merci encore !

Reply

Marsh Posté le 03-06-2002 à 09:01:23    

ouais je sais : beaucoup de gens font ca maintenant, mais le problème c'est que on ne voit pas le thème des posts ... donc c'est quand même mieux de le mettre à la main.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed