IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Probléme sscanf sous GTK+


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Par défaut Probléme sscanf sous GTK+
    Bonjour,

    Je développe actuellement en C sous GTK+ sous Linux afin de créer un mini tableur de type excel. Mes valeurs sont de type double et je les prend grâce à sscanf :

    Voici un exemple de mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    const char * ch = "56.87" ;
    double valeur;
     
    sscanf(ch,"%lf",&valeur);
    printf("Mon double : %lf \n",valeur);
    Lorsque je compile ceci sous la console, j'ai bien mon double qui est égale à 56.87. Mais lorsque j'intègre le code à GTK, la partie décimale est tronquée à 56,000000.

    Merci pour votre aide.

    Mathieu

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    gtk+ doit utiliser "," pour le séparateur des décimales quand ton système est en français, essaie avec "56,87" comme valuer pour ch

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Par défaut
    Merci je vais regarder

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Par défaut
    Problème résolu grâce à teuf13 que je remercie !

    J'ai fait une petite fonction de conversion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Convertion du nombre anglais à français
    char * conv_french(const char * chaine){ 
    	char * ch = strdup(chaine);
    	int i = 0;
    	while(ch[i] != '\0'){
    		if(ch[i]=='.'){
    			ch[i]=',';
    			break;
    		}
    		i++;
    	}
    	return ch;
    }
    Exemple d'utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Le réel qui doit recevoir
    double valeur;
    // Le réel en char *
    char * ch = "78.98";
    // On crée une conversion du double en français
    char * ch2 = conv_french(ch);
    // On met le réel de la chaine dans une variable de type double
    sscanf(ch2,"%lf",&valeur);
    // On libère la ressource
    free(ch2);
     
    printf("%lf\n",valeur);

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Ca marchera pas si qqu'un lance ton programme en faisant par exemple LC_ALL=C ./tonprog. Y a une fonction g_ascii_strtod dans la glib, peut être uqe ça suffirait à tes besoins ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Par défaut
    Le mode LC_ALL=C modifie bien directement le français à l'anglais, donc si l'utilisateur (ou à la compilation ?) met LC_ALL=C ./prog, il n'y a pas besoin d'utiliser la fonction. Merci teuf13

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de sous menu dynamique [GTK+/C]
    Par DevMg dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 28/09/2008, 20h00
  2. Problème police sous IE
    Par rellik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 28/08/2005, 20h12
  3. .htaccess problème création sous windows
    Par Leviathan_72 dans le forum Apache
    Réponses: 2
    Dernier message: 18/05/2005, 20h29
  4. Problème de sous-requete.
    Par Oberown dans le forum Access
    Réponses: 2
    Dernier message: 07/10/2004, 16h44
  5. ContextMenu de l'explorer: Problème de sous menu
    Par Ingham dans le forum Composants VCL
    Réponses: 8
    Dernier message: 26/02/2004, 08h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo