ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 2014
-
16 juin 2007 à 18:55
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 2012
-
19 juin 2007 à 22:51
Bonjour,
Je recherche un tutoriel expliquant comment faire une fonction traitant et revoyant une valeur char.
En C.
ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 20144 17 juin 2007 à 21:53
Bonjour,
Merci pour cette réponse.
Mais je viens de voir que je m'étais mal expliqué je voulais dire :
Je recherche un tutoriel expliquant comment faire une fonction traitant et revoyant une valeur char[] ou char * (renvoyant une chaîne de caractères).
En C.
<hr />
Merci quand même ça pourra toujours me servir et à bientôt.
cs_darunia
Messages postés354Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention24 mars 20112 19 juin 2007 à 13:34
On ne renvoi pas un char* ! On peut le faire comme le montre katsankat, mais ce n'est pas "propre". C'est à l'appelant d'allouer la mémoire :
void foo(char* bar, char* res, size_t ressize)
Tu dois allouer ta variable de retour avant d'appeler la fonction, par exemple :
char res[256];
char texte[256];
strcpy(texte, "le texte");
foo(texte, res, sizeof(res));
Passer la taille de res en 3e paramètre permettra a ton fonction de connaitre l'espace disponible dans res, et ainsi de verifier à ne pas taper dans une zone mémoire non allouée.
D@runia
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_darunia
Messages postés354Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention24 mars 20112 19 juin 2007 à 15:15
[file:///D:/temp/normad.hip
]Bien sur, certaines fonctions fonctionne de cette manière. Mais si tu regardes la derniere version de la msdn, tu verras que getenv a été depreciée et remplacée par getenv_s :
Cela n'est pas un hasard si la nouvelle fonction implemente un passage par reference. Les fonctions qui renvoies un pointeur sur le heap sont lentes, peu sures, et oblige a faire un free apres l'appel.
ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 20144 19 juin 2007 à 21:54
Bonjour,
merci beaucoup pour ces réponses,
je souhaiterai maintenant savoir comment faire une fonction traitant et revoyant un tableau (exemple : char mon_tableau[8][9]).
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 19 juin 2007 à 22:51
Analyser ce code http://www.ai.univ-paris8.fr/~jalb/langimp/sort4.html Il montre:
1) comment une fonction crée et retourne un tableau à deux dimensions.
Renseignes-toi au passage sur calloc() et realloc() afin de bien comprendre ce que font ces fonctions.
2) comment modifier un tableau à deux dimensions en le passant par référence à une fonction.
Darunia merci pour l'info. Je dois rester fidèle au C ANSI ou POSIX pour travailler sur windoze et UNIX.