Pointeur sur char

Signaler
Messages postés
62
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
21 mars 2010
-
Messages postés
16
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
4 novembre 2009
-
salut
j'ai un variable de type char, et une fonction qui retourne un pointeur sur un caractère (char), comment faire pour affecter le retour de la fonction a mon variable.
Merci
A vs

5 réponses

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
Salut,

Pas sûr d'avoir compris, mais ce qu'il ne faut jamais faire
, c'est ça :

#include <stdio.h>

char* Test()
{
  char nResult;

  nResult = 'a';
  return &nResult;
}

int main()
{
  printf("%c\n", *Test());
  return 0;
}


Car nResult cesse d'exister après l'appel à Test, donc tu pointes sur n'importe quoi. Par contre tu peux définir ta variable comme statique. Mais à ce moment là la fonction n'est plus thread safe...

#include <stdio.h>

char* Test()
{
  static char nResult;

  nResult = 'a';
  return &nResult;
}

int main()
{
  printf("%c\n", *Test());
  return 0;
}


Donc c'est valide, c'est mieux, mais c'est pas encore parfait... Pour faire mieux faudrait voir précisément ce que tu essaies de faire.
Messages postés
2
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
3 août 2009

Salut,

Ta solution marche rt15 mais que si le char fait un caractère. Comment faire pour renvoyer un char de plusieurs caractères ?

Merci,
Valentin074
Messages postés
112
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
5 novembre 2009

Un char n'a qu'un seul caractère ! (D'où son nom, et sa taille : 1)
Il t'en faut donc mettre plusieurs (de char), en tableau !

En C/C++, un pointeur, c'est un tableau !

J'imagine que tu as un char * dans ta fonction qui contient ton tableau de char.

Une élégante façon d'agir,en C ça consiste à faire un

return strdup( [ton pointeur] ) .


(Il faudra bien sûr penser a free()er le résultat de ta fonction)





;I'm just keeping the hopeless cross to increase the meaninglessness
Messages postés
2
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
3 août 2009

Bonjour,

Ok merci mais j'ai trouvé une autre solution et ça marche !

Valentin074
Messages postés
16
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
4 novembre 2009

Commentaire très utiles pour les autres.... au moins explique ta solution, ou n'en parle pas!