[C] fonction retournant une chaine de caract [Fermé]

Signaler
Messages postés
327
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
14 avril 2010
-
mamiemando
Messages postés
29181
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
24 février 2020
-
Bonjour à tous

Je voudrais savoir comment créer une fonction en C retournant une chaine de caractères, et comment la récupérer ensuite.
Une autre question : atof retourne t-il un float ou un double?

Merci d'avance
Tophe

2 réponses

Messages postés
488
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
156
pour faire une fonction qui retourne une chaine

il faut faire une fonction de type

char *mafonction( );

(attention à allouer suffisament de mémoire à ce qui va recevoir le retour)
cela se manimpule come une chaine de caractère. exemple :

strcpy(machaine,mafonction( ) )


atof est bien une fonction de type double:

#include <math.h>
double atof(const char *s);


cordialement
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 86603 internautes nous ont dit merci ce mois-ci

tophe03
Messages postés
327
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
14 avril 2010
5
Salut

Pour la fonction retournant une chaine de caractère, j'ai réussi. Merci.

Par contre, lorsque j'utilise la fonction atof, j'ai un souci. En fait, je veux récupérer un double à partir d'une boite de dialogue (API win32). Mais je n'arrive à récupérer que la partie entière, même avec atof.

@+
Tophe
Kermitt31
Messages postés
3689
Date d'inscription
jeudi 15 juillet 2004
Statut
Contributeur
Dernière intervention
8 août 2006
440 > tophe03
Messages postés
327
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
14 avril 2010

est ce qu'il n'y a pas un problème de '.' ou de ','... je sais pas si c'est clair ce que je dis.
Peut etre que tu mets une ',' et qu'il faudrait que tu mettes un '.' quand tu tapes ton réel (ou vice versa).
tophe03
Messages postés
327
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
14 avril 2010
5 > Kermitt31
Messages postés
3689
Date d'inscription
jeudi 15 juillet 2004
Statut
Contributeur
Dernière intervention
8 août 2006

salut

J'ai essayé les deux, et ca ne change rien. En fait, je ne sais pas si ca vient de atof, ou de la manière que j'utilise pour récupérer un double à partir d'une boite de dialogue. D'abord j'utilise GetDlgItemText dans la procédure de dialogue puis je récupère le texte entré dans la prodédure de fenêtre principale grâce à DialogBoxParam et ensuite je convertis la chaine de caractères avec atof. Je ne sais si c'est correct.

@+
Tophe
Messages postés
29181
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
24 février 2020
6 776

Fichier plop.c

#include <stdio.h>
#include <stdlib.h>

long double x, y;

int main(int argc,char **argv)
{
        if (argc==2){
                double d=atof(argv[1]);
                printf("%lf\n",d);
        }
        return 0;
}


Compilation et execution (sous linux)
gcc plop.c
 ./a.out 1.234
1.234000


Celà vient peut être de la boîte de dialogue (plutôt que de atof, qui au passage retourne bien un double)

Bonne chance
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 86603 internautes nous ont dit merci ce mois-ci