Questions sur les fonctions ! (suis un debutant)

Signaler
Messages postés
39
Date d'inscription
vendredi 14 mars 2003
Statut
Membre
Dernière intervention
30 octobre 2008
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
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"

Alors si vous pouviez m'aider ce sera sympa

5 réponses

Messages postés
39
Date d'inscription
vendredi 14 mars 2003
Statut
Membre
Dernière intervention
30 octobre 2008

en fait j'ai pas mit nom1="toto";

mais strcpy( nom1, "toto" );

sinon il y a une erruer de plus
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
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...
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
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;}
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
...enfin...
return nom1;
bien sûr
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
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...