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 :

Conversion guint vers chaine de caractères


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Par défaut Conversion guint vers chaine de caractères
    Voici mon problème :
    J'utilise la fonction qui permet de recuperer les éléments d'une dates dans trois variable de type guint (gtk_calendar_get_date)

    j'aimerais pouvoir convertir le contenu de ces variables en chaine de caractère pour pouvoir ensuite les afficher dans un label

    Merci

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Salut !


    Tu peux utiliser g_sprintf de la GLib pour construire ta chaîne
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Par défaut
    J'ai déjà testé, il me met des erreurs au niveau des types
    voici un exemple de ce que j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    GtkWidget *Calendrier;
      gchar *date;
      guint *annee,*mois,*jour;
     
       gtk_calendar_get_date(GTK_CALENDAR(Calendrier),annee,mois,jour); //pour la recup de l'année, du mois, du jour.
    ensuite voila ce que j'ai testé sans résulats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sprintf(date,"%d %d %d",annee,mois,jour);
      sprintf(date,"%d",annee);
      sscanf(date, "%d", annee); 
      g_sprintf(date,"%d",annee);
    aucune de ces lignes ne marche a l'exécution
    sinon y'a til un moyen de passer d'un type guint a un type int??

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Par défaut
    Citation Envoyé par diophantes
    il me met des erreurs au niveau des types
    voici un exemple de ce que j'ai:

    GtkWidget *Calendrier;
    gchar *date;
    guint *annee,*mois,*jour;

    gtk_calendar_get_date(GTK_CALENDAR(Calendrier),annee,mois,jour); //pour la recup de l'année, du mois, du jour.

    ensuite voila ce que j'ai testé sans résulats:
    sprintf(date,"%d %d %d",annee,mois,jour);
    sprintf(date,"%d",annee);
    sscanf(date, "%d", annee);
    g_sprintf(date,"%d",annee);
    remplace le %d par %i pour les guint pour ne plus avoir de Warning concernant les types.

    De plus tu utilises la fonction sprintf !!! sprintf attend des "int" et pas des "guint" comme tu lui donnes ! Il faut utiliser g_sprintf.

    Tu peux aussi utiliser ca:

    sString=g_strdup_printf("Annee: %i mois: %i jour: %i",annee,mois,jour);

    Ne pas oubliez de liberer la memoire une fois que tu n'as plus besoin du sString par un g_free(sString)

    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Par défaut
    je pense que sa devrai marcher (je n'avais pas connaissance du %i)
    je testerai sa et te dirai si sa marche
    merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Par défaut
    Sa marche
    seul problème,
    quand je récupère la date j'accède directement aux differents champ de mon
    calendrier en utilisant ces lignes de commandes

    date=g_strdup_printf(%i/%i/%i,
    GTK_CALENDAR(calendrier)->day
    GTK_CALENDAR(calendrier)->month
    GTK_CALENDAR(calendrier)->year
    );

    le résultat renvoyé me donne effectivement l'année et le mois correctement mais pour le jour j'obtient un truc bizarre qui ressemble plus a une adresse de pointeur

  7. #7
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    J'en suis également au même point mais j'ai quelques difficultés. Je m'explique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        guint *year,*month,*day;
    Voila comment sont déclarées mes variables qui vont me permettre de récupérer les jours, mois, années composant ma date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	/*Récupération de la date*/
        gtk_calendar_get_date(GTK_CALENDAR(calendrier),year,month,day);
        g_sprintf(date,"%i%i%i",year,month,day);
    Voila comment je tente de récupérer la date et de la convertir en char.

    Et voila, enfin, comment je tente d'écrire dans mon fichier.

    Et pas moyen de récupérer ces informations...

    EDIT : ah si, il récupère des informations, ça :
    228984
    Ce qui n'a aucun rapport avec le 25 Avril 2007.

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Si tu veux écrire en mode texte simple je te suggère fprintf, fwrite étant utilisée surtout pour les flux binaires, cela fait partie des bases du C.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  9. #9
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    quand j'utilise fprintf, je me retrouve avec des Kanji dans mon fichier texte

  10. #10
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Le problème doit se situer autre part ou dans un passage d'argument ou je ne sais quoi car mon petit programme de test que je me suis amusé à faire, fonctionne parfaitement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    #include <stdio.h>
    #include <gtk/gtk.h>
    #include <glib/gprintf.h>
     
     
    static void cb_clicked (GtkWidget * p_wid, gpointer p_data)
    {
       GtkCalendar *  p_calendar  = p_data;
       FILE        *  p_file      = NULL;
       guint          year        = 0;
       guint          month       = 0;
       guint          day         = 0;
     
     
       g_return_if_fail (p_data != NULL);
     
     
       gtk_calendar_get_date (p_calendar, & year, & month, & day);
     
       p_file = fopen ("date.txt", "w");
     
       if (p_file != NULL)
       {
          fprintf  (p_file, "%d/%d/%d\n", day, month, year);
          fclose   (p_file);
       }
     
       (void) p_wid;
    }
     
     
    int main (int argc, char **argv)
    {
       GtkWidget * p_win       = NULL;
       GtkWidget * p_box       = NULL;
       GtkWidget * p_calendar  = NULL;
       GtkWidget * p_btn       = NULL;
     
     
       gtk_init (& argc, & argv);
     
     
       p_win = gtk_window_new           (GTK_WINDOW_TOPLEVEL);
       gtk_window_set_default_size      (GTK_WINDOW (p_win), 200, 200);
       gtk_container_set_border_width   (GTK_CONTAINER (p_win), 5);
       gtk_window_set_position          (GTK_WINDOW (p_win), GTK_WIN_POS_CENTER);
     
       p_box       = gtk_vbox_new (FALSE, 0);
       p_calendar  = gtk_calendar_new ();
       p_btn       = gtk_button_new_from_stock (GTK_STOCK_SAVE);
     
       gtk_container_add    (GTK_CONTAINER (p_win), p_box);
       gtk_box_pack_start   (GTK_BOX (p_box), p_calendar, TRUE, TRUE, 0);
       gtk_box_pack_start   (GTK_BOX (p_box), p_btn, TRUE, TRUE, 0);
     
     
       g_signal_connect (
          G_OBJECT (p_win), "destroy", G_CALLBACK (gtk_main_quit), NULL
       );
       g_signal_connect (
          G_OBJECT (p_btn), "clicked", G_CALLBACK (cb_clicked), (gpointer)p_calendar
       );
     
     
       gtk_widget_show_all (p_win);
       gtk_main ();
     
     
       return 0;
    }
    Et la sortie dans le fichier donne ceci avec la date du jour:
    Cela pourrais peut-être venir du modificateur %i. A creuser
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  11. #11
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    Mis à part que le mois d'avril correspond au mois numéro 4

    Je vais essayer de l'incorporer à mon code

  12. #12
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Matalobos
    Mis à part que le mois d'avril correspond au mois numéro 4
    Arf c'est vrai, j'ai même pas fait attention à ca
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  13. #13
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    j'ai trouvé d'où venait peut-être mon erreur. J'ouvrais mon fichier texte en mode "a" pour me placer à la fin dudit. J'ai mis "w" comme toi, il faut que je me place à l'avant dernière ligne maintenant.

    EDIT : j'ai modifié le programme afin de ne plus utiliser le gtk calendar get date et ça marche beaucoup mieux

  14. #14
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    J'ai pu réutiliser l'ouverture en mode "a". je ne sais pas pourquoi ça marche mais ça marche.

    J'ai une autre question. Peut-on récupérer le nom du jour que l'on sélectionne dans le calendrier? J'ai cherché dans le guide gtk de gnome mais j'ai pas vu de fonction qui se rapprocherait de celà.

  15. #15
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Matalobos
    J'ai une autre question. Peut-on récupérer le nom du jour que l'on sélectionne dans le calendrier? J'ai cherché dans le guide gtk de gnome mais j'ai pas vu de fonction qui se rapprocherait de celà.
    Je ne crois pas qu'une telle fonction existe
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  16. #16
    Membre averti
    Inscrit en
    Février 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 68
    Par défaut
    Ca va être compliqué ça

Discussions similaires

  1. conversion tableau vers chaine de caractere
    Par sneb5757 dans le forum Réseau
    Réponses: 6
    Dernier message: 12/11/2006, 22h31
  2. conversion entier vers chaine de caratères
    Par naima2005 dans le forum C++
    Réponses: 3
    Dernier message: 20/08/2006, 02h14
  3. [Système] Conversion d'une chaine de caractère en hexa
    Par Florent08800 dans le forum Langage
    Réponses: 5
    Dernier message: 10/07/2006, 15h32
  4. conversion d'une chaine de caractère en int
    Par greg13 dans le forum C++
    Réponses: 3
    Dernier message: 25/08/2005, 16h18

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