Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1748 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probleme avec strtod en c

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme avec strtod en c

n°758753
zavatha
Posté le 10-06-2004 à 09:20:36  profilanswer
 

salut à tous,
 
j'ai besoin de récoupérer des valeurs dans un fichier texte...
apres parsing du fichier j'obtient les valeurs sous forme de chaines de caractere (merci strtok...) ... et ca se complique :(
 
alors je suis fait une tite fonction test :
void convtest(){
  char test[] = "-120.02";
    char * err = NULL;
 
    int errno = 0;
 
    double result = strtod(test, &err);
    printf("%s %s\n","conversion de",test);
    if (err == test) {
        printf("Erreur de conversion :\n" );
    }  
    else {
      printf("Conversion reussie :%f\n", result);
        if(*err == '\0') {
            printf("Pour toute la chaine\n" );
        }
    }
}

 
et ca foire :(
elle me retourne c a:
conversion de -120.02
Conversion reussie :-1374389535.000000
Pour toute la chaine

 
c pas glop...
je précise que je suis sous fedora au cas ou ca aurait une importance (histoire de compilo ou librairie...)
 
merci pour vos indices  :bounce:  
paske la je seche  :cry:

mood
Publicité
Posté le 10-06-2004 à 09:20:36  profilanswer
 

n°758774
cricri_
Posté le 10-06-2004 à 09:33:01  profilanswer
 

j'ai rien dit ... :ange:


Message édité par cricri_ le 10-06-2004 à 09:33:40
n°758777
Taz
bisounours-codeur
Posté le 10-06-2004 à 09:35:01  profilanswer
 

#include <stdlib.h> :o
 
rajoute des warnings :o
 
t'as été victime de la conversion vers int()(int) que le compilateur génère s'il ne trouve pas de déclaration de fonction

n°758791
cricri_
Posté le 10-06-2004 à 09:44:02  profilanswer
 

mais sans stdlib ça ne compile pas chez-moi ...
sinon ça fonctionne correctement chez-moi.

n°758836
palex
Posté le 10-06-2004 à 10:02:45  profilanswer
 

salut
 
moi sur linux quand j execute ton code tel quel jai ca
 
[palex@si01p139 exo]$ cc main.c
main.c: In function `main':
main.c:4: error: `NULL' undeclared (first use in this function)
main.c:4: error: (Each undeclared identifier is reported only once
main.c:4: error: for each function it appears in.)
 
maintenant si je rajoute le #include <stdlib.h>
 
[palex@si01p139 exo]$ cc main.c
[palex@si01p139 exo]$ ./a.out  
conversion de -120.02
Conversion reussie :-120.020000
Pour toute la chaine
 
donc un conseille toujours mettre les includes, apres de nombreux code realiser je me suis rendu compte que meme si ca compile et ke le programme s'execute le resultat n'es pas toujours le bon juste a cause de l'oubli d'un include ;) apres il es possible que certain compilateur les rajoute? mais bon si tu test ton code sur plusieurs archi comme moi sur linux bah ca marche plus :).
sinon comme tu pe le voir ton code marche tres bien...

n°759349
Taz
bisounours-codeur
Posté le 10-06-2004 à 15:29:42  profilanswer
 

personne rajoute rien. en C il n'y a pas de surcharge de fonction, donc pour la liaison, seul son nom est nécessaire. ensuite, quand une fonction n'est pas déclarée, le compilateur synthétise un prototype int f(int) ... au final, l'association  int f(int) et double f(char, double, ...) est toujours valide. seulement à l'exécution, boom. donc oui, inclus toujours ce qu'il faut, dis à ton compilateur de gueuler un peu et ça passera.
 
le bug classique, c'est avec malloc, la converstion void* -> int fout en l'air ton pointeur comme double -> int à mité ton résultat

n°761666
zavatha
Posté le 13-06-2004 à 10:31:11  profilanswer
 

ce qui est rigolo c'est que j'ai quand même compilé avec l'option -Wall...
et pourtant il n'a rien vu... :o\

n°761669
Taz
bisounours-codeur
Posté le 13-06-2004 à 10:35:24  profilanswer
 

ça m'étonnerait
 

benoit@athlon >>> cat strtod.c
#include <stddef.h>
int main() { double d = strtod("3.14", NULL); return 0; }
 
[10:35:06][pts/100][/tmp][#10]
benoit@athlon >>> gcc strtod.c
 
[10:35:08][pts/100][/tmp][#11]
benoit@athlon >>> gcc -Wall strtod.c
strtod.c: Dans la fonction « main »:
strtod.c:2: attention : implicit declaration of function `strtod'
strtod.c:2: attention : unused variable `d'


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probleme avec strtod en c

 

Sujets relatifs
[ASP - SQL - DTS]Probleme d'execution DTS depuis page ASPprobleme pour texturer une planete en opengl
[Java] Problème de design : repercution de modificationsprobleme : taille de fichier limitée à 2Mo en upload (ovh)...
Probleme de formulaire sous accessProbleme document.write
[yacc] Probleme yaccprobleme rafraichissement
[Firefox et Javascript] Problème avec history.back() qui boucle ![access] probleme de requete avec plusieurs parametres .....
Plus de sujets relatifs à : probleme avec strtod en c


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR