bonjour les amis. je suis nouveau sur le forum de developpez.com et j'ai vraiment un très grand problème avec mon code C/GTK+..
tout d'abord je crée une fenêtre dans lequel se trouve 3 entry et deux bouton. je récupère les informations de l'utilisateur pour aller les placer dans le fichier.Mais voila je ne comprend pas pourquoi le programme bug..donc si quelqu'un pourrait m'aider ,je lui serait vraiment reconnaissant. merci d'avance
voici tout le code avec les deux fonctions
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <stdlib.h>
#include <gtk/gtk.h>
#include <string.h>
 
typedef struct
{
    const gchar *nom;
    const gchar *prenom;
    const gchar *telephone;
}personne;
 
    void mettreFichier(GtkWidget *widget,gpointer data);
    void LireFichier(GtkWidget *widget,gpointer data);
    static GtkWidget *pLabel1;
    static GtkWidget  *pEntry1;
    static GtkWidget *pLabel2;
    static GtkWidget  *pEntry2;
    static GtkWidget *pLabel3;
    static GtkWidget  *pEntry3;
    static personne Client;
 
FILE *fichier;
int main(int argc,char **argv)
{
    GtkWidget *pWindow;
    GtkWidget *pVBox;
 
    GtkWidget *Valider;
    GtkWidget *AfficherListe;
 
    gtk_init(&argc,&argc);
 
    pWindow =gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(pWindow),GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(pWindow),320,200);
    gtk_window_set_title(GTK_WINDOW(pWindow),"contact telephonique");
 
    g_signal_connect(G_OBJECT(pWindow),"destroy",G_CALLBACK(gtk_main_quit),NULL);
 
    pVBox =gtk_vbox_new(FALSE,0);
    gtk_container_add(GTK_CONTAINER(pWindow),pVBox);
 
    pLabel1 = gtk_label_new("Nom");
    gtk_box_pack_start(GTK_BOX(pVBox),pLabel1,TRUE,FALSE,0);
    pEntry1 = gtk_entry_new();
    gtk_box_pack_start(GTK_BOX(pVBox),pEntry1,TRUE,FALSE,0);
 
    pLabel2 = gtk_label_new("Prenom");
    gtk_box_pack_start(GTK_BOX(pVBox),pLabel2,TRUE,FALSE,0);
    pEntry2 = gtk_entry_new();
    gtk_box_pack_start(GTK_BOX(pVBox),pEntry2,TRUE,FALSE,0);
 
    pLabel3 = gtk_label_new("Telephone");
    gtk_box_pack_start(GTK_BOX(pVBox),pLabel3,TRUE,FALSE,0);
    pEntry3 = gtk_entry_new();
    gtk_box_pack_start(GTK_BOX(pVBox),pEntry3,TRUE,FALSE,0);
 
    Valider =gtk_button_new_with_label("Valider");
    gtk_box_pack_start(GTK_BOX(pVBox),Valider,TRUE,FALSE,0);
    AfficherListe =gtk_button_new_with_label("AfficherListe");
    gtk_box_pack_start(GTK_BOX(pVBox),AfficherListe,TRUE,FALSE,0);
 
    g_signal_connect(G_OBJECT(Valider),"clicked",G_CALLBACK(mettreFichier),NULL);
    g_signal_connect(G_OBJECT(AfficherListe),"clicked",G_CALLBACK(LireFichier),NULL);
    gtk_widget_show_all(pWindow);
    gtk_main();
 
 
 
    return EXIT_SUCCESS;
 
 
}
void mettreFichier(GtkWidget *widget,gpointer data)
{
 
    Client.nom =gtk_entry_get_text(GTK_ENTRY(pEntry1));
    Client.prenom =gtk_entry_get_text(GTK_ENTRY(pEntry2));
    Client.telephone =gtk_entry_get_text(GTK_ENTRY(pEntry3));
    fichier =fopen("monfichier.bin","ab+");
    if(fichier!=NULL)
    {
 
        fwrite(&Client,sizeof(Client),1,fichier);
        gtk_main_quit();
        fclose(fichier);
    }
}
void LireFichier(GtkWidget *widget,gpointer data)
{
    GtkWidget *fenetre;
    GtkWidget *pVBox;
    GtkWidget *OK1;
    GtkWidget *pLabell1;
    gchar *nom;
    GtkWidget *pLabell2;
    GtkWidget *pLabell3;
    GtkWidget *pLabell4;
 
    fenetre =gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(fenetre),GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(fenetre),320,200);
    gtk_window_set_title(GTK_WINDOW(fenetre),"Liste des contact telephonique");
 
    g_signal_connect(G_OBJECT(fenetre),"destroy",G_CALLBACK(gtk_main_quit),NULL);
 
    pVBox =gtk_vbox_new(FALSE,0);
    gtk_container_add(GTK_CONTAINER(fenetre),pVBox);
 
    fichier = fopen("monfichier.bin" , "rb+");
    rewind(fichier);
 
    while(fread(&Client,sizeof(Client),1,fichier)!=NULL)
    {
 
            nom = g_strdup_printf("Nom: %s",Client.nom);
            pLabell1 = gtk_label_new(nom);
            gtk_box_pack_start(GTK_BOX(pVBox),pLabell1,TRUE,FALSE,0);
            g_free(nom);
    }
    fclose(fichier);
 
    OK1 =gtk_button_new_with_label("ok");
    gtk_box_pack_start(GTK_BOX(pVBox),OK1,TRUE,FALSE,0);
 
    g_signal_connect(G_OBJECT(OK1),"clicked",G_CALLBACK(gtk_main_quit),NULL);
    gtk_widget_show_all(fenetre);
    gtk_main();
}