Pointeur sur char

wislam2007 Messages postés 62 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 21 mars 2010 - 23 juil. 2009 à 17:05
iloveprog Messages postés 16 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 4 novembre 2009 - 4 août 2009 à 10:32
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

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
23 juil. 2009 à 18:06
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.
0
valentin074 Messages postés 2 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 3 août 2009
3 août 2009 à 13:08
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
0
Kotomine Messages postés 112 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 5 novembre 2009
3 août 2009 à 14:42
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
0
valentin074 Messages postés 2 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 3 août 2009
3 août 2009 à 21:07
Bonjour,

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

Valentin074
0

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

Posez votre question
iloveprog Messages postés 16 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 4 novembre 2009
4 août 2009 à 10:32
Commentaire très utiles pour les autres.... au moins explique ta solution, ou n'en parle pas!
0
Rejoignez-nous