sebclick
Messages postés39Date d'inscriptionvendredi 14 mars 2003StatutMembreDernière intervention30 octobre 2008
-
14 mars 2003 à 17:48
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
15 mars 2003 à 12:13
slt tlm
je programme en c++ depuis qlql semaines... et la je viens de decouvrir ce site... ça tombe bien j'ai un petit pb.
Lorsque l'on créer une fonction, peut elle retourner une chaine de caracteres ? (je lé déjà fé ac des entiers)
parce que la j'ai essayer mais j'ai une erreur.
j'ai nom1[20] en variables globales et voici ce que j'ai marqué pour ma fonction :
char aqui()
{
nom1="toto";
return nom1;
}
et j'ai 2 erreurs :
- "return : cant convert from char[99] to char"
- "aqui : function must return a value"
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 14 mars 2003 à 18:32
tu dois retourner un pointeur et non un char.
char* mafunc()
{
char *p;
p = (char*) malloc(12);
if(p) strcpy(p, "Toto");
return p; // ainsi sera 0 ou valide
}
c'est a l'appelant de faire:
char *c;
c = mafunc();
if(c == NULL) return; // exemple
traitements avec *c.......
free(c); // il faut liberer la memoire
BruNews, ciao...
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 15 mars 2003 à 11:04
on peut aussi faire plus simple car tu dis que tu as défini la variable nom1[20] en globale et il est donc inutile de passer par de l'allocation dynamique.
char nom1[20];
char * maFunc()
{ strcpy(nom1, "toto"); return nom;}
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 15 mars 2003 à 12:13
bien sur que si tu places resutat dans une variable globale tu n'as pas a faire d'alloc memoire, c'etait didactique. De + pourquoi retourner un pointeur en ce cas, tout ton prog connait cette var globale.
BruNews, ciao...