Questions sur les fonctions ! (suis un debutant)

sebclick Messages postés 39 Date d'inscription vendredi 14 mars 2003 Statut Membre Dernière intervention 30 octobre 2008 - 14 mars 2003 à 17:48
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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"

Alors si vous pouviez m'aider ce sera sympa

5 réponses

sebclick Messages postés 39 Date d'inscription vendredi 14 mars 2003 Statut Membre Dernière intervention 30 octobre 2008
14 mars 2003 à 17:49
en fait j'ai pas mit nom1="toto";

mais strcpy( nom1, "toto" );

sinon il y a une erruer de plus
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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...
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
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;}
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
15 mars 2003 à 11:06
...enfin...
return nom1;
bien sûr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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...
0
Rejoignez-nous