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 de LANG (fr/us) dans un programme Gtk+/C/Fortran90


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut Problème de LANG (fr/us) dans un programme Gtk+/C/Fortran90
    Bonjour à tous et à toutes,

    je rencontre actuellement un problème d'exécution,
    le problème apparaît sous Windows comme sous Linux.
    Le programme que je développe est codé en Fortran 90 et en C pour l'interface Gtk+.
    J'utilise Code::Blocks et les compilateurs GNU,
    dans un premier temps j'ai cru à un problème avec ces compilateurs et j'ai posté
    sur la mailing list gcc-help (http://gcc.gnu.org/ml/gcc-help/2009-04/msg00144.html pour plus de détails en anglais).
    Depuis ce mail dans lequel je pensais que l'erreur provenait des compilateurs et surtout de l'interaction C/F90
    j'ai constaté que la même chose est valable en C (j'ai réécris les routines de lecture de fichier en C et observé le même résultat.)
    En bref j'ai constaté que sous un environnement de travail Fr (LANG=fr_FR.UTF-8 sous Linux Fedora 10)
    mon programme est incapable de lire valeurs numériques décimales depuis un fichier: 8.5353 est lu 8.0000
    Pour obtenir un résultat correct je dois modifier mon fichier d'entrée et remplacer les . par des ,
    D'un autre côté si je change l'environnement en (LANG=en_US.UTF-8) le programme fonctionne parfaitement.

    Y a t'il un moyen de gérer cette dépendance à la compilation et d'indiquer comment le programme doit gérer la lecture des réels.

    Sous Linux facile de changer l'environnement, je peut fournir un script d'exécution
    qui lance mon programme sous environnement US mais sous Win32 je fais comment ?

    Merci d'avance pour vos lumières.

    S.

  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
    g_ascii_strtod () doit faire ce que tu veux

  3. #3
    Membre confirmé
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut
    Je ne connaissais pas cette fonction et l'idée semblait bonne ... mais non ...

    Je dois lire des fichiers de coordonnées du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    Ge 2.89898 5.54654 12.749879
    ...
    En C je récupère la ligne comme ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #define BUFF_SIZE 500
     
    char the_line[BUFF_SIZE];
    char * idat;
    float x, y, z;
    FILE * fxyz;
     
    fxyz = fopen(xyz_file, "r");
    fgets(the_line,sizeof(the_line),fxyz);
    sscanf(the_line, "%s %lf %lf %lf", idat, &x, &y, &z);
    Comment utiliser la fonction g_ascii_strtod () dans ce cas ... et si je transforme 'x, y, et z' en 'char *' la lecture ne fonctionne pas.

    S.

  4. #4
    Membre confirmé
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut
    Résolu en utilisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_disable_setlocale();
    en début de programme.

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

Discussions similaires

  1. problème de tri de tableau dans un programme
    Par chupinours dans le forum Débuter
    Réponses: 9
    Dernier message: 27/10/2012, 15h41
  2. problème dans un programme
    Par mederic dans le forum C
    Réponses: 5
    Dernier message: 13/05/2006, 16h53
  3. Réponses: 8
    Dernier message: 23/03/2006, 19h30
  4. Réponses: 3
    Dernier message: 09/01/2006, 11h26
  5. [Debutant] Problème de fraction dans un programme
    Par SAKDOSS dans le forum Débuter
    Réponses: 4
    Dernier message: 22/10/2005, 18h38

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