begin process at 2012 05 30 05:54:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

prog c : chaine en valeur de retour d'une fonction


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

prog c : chaine en valeur de retour d'une fonction

vendredi 26 mai 2006 à 21:52:15 | prog c : chaine en valeur de retour d'une fonction

laetitiavincent

Bonjour
je souhaiterais faire une fonction dans laquelle j'ai une chaine de caractères que je voudrais renvoyée dans le menu principal. Comment puis-je faire? Quelqu'un pourrait me donner un exemple

Merci



 Laetitia
vendredi 26 mai 2006 à 22:36:58 | Re : prog c : chaine en valeur de retour d'une fonction

SAKingdom

Membre Club
Impossible de renvoyer un pointeur d'un variable local. Il faut que la variable soit déclaré avant la fonction et utilisé dans ses paramètres.

void exemple (int *Valeur)
{
    Valeur[0] = 10;
    Valeur[1] = 25;
    ...
}

___________________________________________
Les plus grands esprits trouvent toujours une solution

vendredi 26 mai 2006 à 22:50:49 | Re : prog c : chaine en valeur de retour d'une fonction

SAKingdom

Membre Club
Et il faut évidament que la mémoire qu'elle utilise soit déclaré aussi avant dépendant de ce que tu veut faire:
Par exemple encore:

void Exemple (char *valeur, int taille)
{
    int pos = 0;

    while(taille < pos)
    {
       valeur[pos] = 'a';
       pos++;
    }
}

char Test[256];

Exemple (Test, sizeof(Test));

___________________________________________
Les plus grands esprits trouvent toujours une solution

vendredi 26 mai 2006 à 22:54:02 | Re : prog c : chaine en valeur de retour d'une fonction

24Karas

Réponse acceptée !
pas tout à fait vrai, l'exemple suivant devrait marcher (pas testé)

char *Function()
{
    char *szNewString

   szNewString = new char[256];
   strcpy(szNewString,"toto");

    return szNewString;
}


int main (void)
{
   char *sPtr;
   sPtr = Function();

   fprintf (stderr,"%s\n",sPtr);
   delete []sPtr;

   return 0;
}

++
24K
vendredi 26 mai 2006 à 22:58:00 | Re : prog c : chaine en valeur de retour d'une fonction

SAKingdom

Membre Club
Aussi mais je trouve pas ça très appréciable dans un code d'avoir des delete partout sans savoir exactement où se trouve le new.

___________________________________________
Les plus grands esprits trouvent toujours une solution

vendredi 26 mai 2006 à 23:06:13 | Re : prog c : chaine en valeur de retour d'une fonction

24Karas

c'était simplement pour corriger "Impossible de renvoyer un pointeur d'un variable local."
;-)
vendredi 26 mai 2006 à 23:11:16 | Re : prog c : chaine en valeur de retour d'une fonction

SAKingdom

Membre Club
Je comprend mais c'est que normalement, ce genre de fonction d'habitude, traite les chaines de caractère, il ne les créé pas. Tu vois ce que je veux dire?

___________________________________________
Les plus grands esprits trouvent toujours une solution

vendredi 26 mai 2006 à 23:21:59 | Re : prog c : chaine en valeur de retour d'une fonction

24Karas

bien sûr, mais imaginons que plus tard elle veuille faire des structures, ... c'est pas plus mal d'avoir une fonction d'alloc comme celle ci et ensuite une fonction de free.
m'enfin c'est pas grave hein, c'est juste pour montrer toutes les possibilités, ensuite elle fera son choix

++
samedi 27 mai 2006 à 00:12:17 | Re : prog c : chaine en valeur de retour d'une fonction

vecchio56

Administrateur CodeS-SourceS
24Karas ta fonction renvoie une valeur, mais la mémoire allouée n'est pas locale, donc c'est pas un bon contre exemple
Il est aussi possible de renvoyer un tableau local, le problème c'est qu'on doit l'utiliser directement ensuite, sinon il va être écrasé
exemple:
char* f()
{
  char local[] = "toto";
  return local;
}

char c[12];
strcpy(c, f());

Bien sur, ça n'a aucun intérêt, c'est pour ca que j'en parle

Pour les structures c'est pareil: en général on passe un pointeur en paramètre
Je pense qu'une fonction qui alloue de la mémoire sans la désallouer, c'est nul

La bonne solution est donc: passer un buffer en paramètre et le remplir dans la fonction
samedi 27 mai 2006 à 00:14:52 | Re : prog c : chaine en valeur de retour d'une fonction

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
Pour exprimer les problèmes qu'on peut avoir en retournant un tableau local:

#include <iostream>

using namespace std;

char* f()
{
  char local[] = "toto";
  return local;
}

char* g()
{
  char local[] = "titi";
  return local;
}

int main()
{
  char c[12];
  char* p = f();
  g();
  strcpy(c, p);
  cout << c << endl;
}

1 2

Cette discussion est classée dans : fonction, valeur, chaine, prog, retour


Répondre à ce message

Sujets en rapport avec ce message

Récupération de la valeur de retour d'un .exe dans un prog en C [ par stephanieL ] Salut tout le monde!Je voudrais lancer un exe d'un programme en c, et récupérer la valeur de retour de cet exe dans ce prog en c.Le main de l'exe à la retour d'un tableau de chaine de caractere [ par casper_2 ] Bonjour,j 'un soucis avec les retours de chaine dans une fonction.Je sais ke cela est du au niveau des pointeurs, et les adresses,,mais je ne vois kom Encore et encore du RIGHT [ par psycomel ] Salut a tous. Voila, une question qui n'a jamais été clairement répondu. Comment faire la fonction rigth ?j'ai trouvé la fonction strpbrk qui envoi la thread et plein ecran [ par dletozeun ] bonjour,je voudrais savoir s'il est possible qu'un thread créé par un prog (en c++) qui se lance en plein ecran, puisse ne jamais s'excuter...c appare char* et char** (paramètre de fonction in ou out) [ par jockos ] Bonjour, Je ne débute pas le C, mais pourtant il y a un truc que j'ai du mal à saisir...En C :Quand on veut passer un int en paramètre d'une fonction. Fonction qui recupere le HWND du prog courrant...??? [ par youpiyoyo ] j'aurai besoin de recupere le HWND,je sais ke l'on peut le mettre en global du genreLRESULT CALLBACK DlgMainProc(HWND hwnd, UINT msg, WPARAM wParam, L Fonction qui remplace une chaine de caractères en vue d'une traduction [ par Skippy2605 ] Bonjour,Je cherche une fonction C++ qui afficherait une chaine de caractères en fonction d'un paramètre lang (fr, en ou sp), la chaine correspondante fonction trouver et remplacer [ par sousi ] realiser une fonction trouve permettant de trouver une chaine de caractere dans un fichier texte et une fonction remplace pour remplacer la chaine par copier nombre dans chaine de caracteres?? [ par dletozeun ] bonjour,Je cherche une fonction capable de copier un entier dans une chaine de caracteres et une autre fonction capable de transformer une chaine de c handle de Createfile ET writefile [ par oudkaramla ] salut tout le mondej'ai un pepin avec le HANDLE DE createfile, en effet malgré que j'ai déclaré le handle comme variable globale, il perds sa valeur e


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,370 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales