Je veux cherché une solution pour mon code ;svp

Fermé
lamiabmw - 14 déc. 2014 à 14:47
interface graphique glade-2.12.2:
lorsque je clique sur un bouton il m'affiche <<Segmentation fault (core dumped)>> .
callbacks.c
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif

#include <gtk/gtk.h>

#include "callbacks.h"
#include "interface.h"
#include "support.h"
# include "administration.h"






#include "administration.h" //pour le volet métier de l'application

void on_button11_clicked(GtkWidget *objet_graphique, gpointer user_data)
{
personnel P;


GtkWidget *entry3;
GtkWidget *entry4;
GtkWidget *entry5;
GtkWidget *entry6;
GtkWidget *entry7;
GtkWidget *entry8;

entry3 = lookup_widget(objet_graphique, "entry3");
entry4 = lookup_widget(objet_graphique, "entry4");
entry5 = lookup_widget(objet_graphique, "entry5");
entry6 = lookup_widget(objet_graphique, "entry6");
entry7 = lookup_widget(objet_graphique, "entry7");
entry8 = lookup_widget(objet_graphique, "entry8");
//copier la chaine saisie à partir de entry1 vers P.nom
strcpy(P.nom,gtk_entry_get_text(GTK_ENTRY(entry3)));
//copier la chaine saisie à partir de entry2 vers P.nom
strcpy(P.prenom,gtk_entry_get_text(GTK_ENTRY(entry4)));
//convertir la chaine saisie à partir de entry3 et la copier dans P.age
P.age = atoi(gtk_entry_get_text(GTK_ENTRY(entry5)));
P.cin = atoi(gtk_entry_get_text(GTK_ENTRY(entry6)));
strcpy(P.fonction,gtk_entry_get_text(GTK_ENTRY(entry7)));
P.identifiant = atoi(gtk_entry_get_text(GTK_ENTRY(entry8)));

ajouter_personnel(P.identifiant);

}

void on_button12_clicked(GtkWidget *objet_graphique, gpointer user_data)
{
personnel P;



char Buf0[50] = "NOM: ";
char Buf1[50] = "PRENOM: ";
char Buf2[50] = "AGE: ";
char Buf3[50]="C.I.N :";
char Buf4[50]="fonction:";
char Buf5[50]="I.D:";

GtkWidget * label15;

label15= lookup_widget(objet_graphique, "label15");

ajouter_personnel (P.identifiant);

sprintf(Buf0, "%s %s \n\n %s %s \n\n %s %d \n\n %s %ld \n\n %s %s \n\n %s %ld \n\n", Buf0, P.nom, Buf1,
P.prenom, Buf2, P.age,Buf3,P.cin,Buf4,P.fonction,Buf5,P.identifiant);

gtk_label_set_text(GTK_LABEL(label15), Buf0);

}
void on_button13_clicked(GtkWidget *objet_graphique, gpointer user_data)
{
patient P;

GtkWidget *entry9;
GtkWidget *entry10;
GtkWidget *entry11;
GtkWidget *entry12;
GtkWidget *entry13;
GtkWidget *entry14;
GtkWidget *entry15;


entry9 = lookup_widget(objet_graphique, "entry9");
entry10 = lookup_widget(objet_graphique, "entry10");
entry11 = lookup_widget(objet_graphique, "entry11");
entry12 = lookup_widget(objet_graphique, "entry12");
entry13= lookup_widget(objet_graphique, "entry13");
entry14 = lookup_widget(objet_graphique, "entry14");
entry15= lookup_widget(objet_graphique, "entry15");

//copier la chaine saisie à partir de entry1 vers P.nom
strcpy(P.nom,gtk_entry_get_text(GTK_ENTRY(entry9)));
//copier la chaine saisie à partir de entry2 vers P.nom
strcpy(P.prenom,gtk_entry_get_text(GTK_ENTRY(entry10)));
//convertir la chaine saisie à partir de entry3 et la copier dans P.age
P.age = atoi(gtk_entry_get_text(GTK_ENTRY(entry11)));
P.cin = atoi(gtk_entry_get_text(GTK_ENTRY(entry12)));
P.d_arrivee.jour = atoi(gtk_entry_get_text(GTK_ENTRY(entry13)));
P.d_arrivee.mois = atoi(gtk_entry_get_text(GTK_ENTRY(entry14)));
P.d_arrivee.annee = atoi(gtk_entry_get_text(GTK_ENTRY(entry15)));


ajouter_patient();

}

void on_button14_clicked(GtkWidget *objet_graphique, gpointer user_data)
{
patient P;



char Buf0[50] = "NOM: ";
char Buf1[50] = "PRENOM: ";
char Buf2[50] = "AGE: ";
char Buf3[50]="C.I.N";
char Buf4[50]="jourd'entree";
char Buf5[50]="moisd'entree";
char Buf6[50]="anneed'entree";

GtkWidget * label23;

label23= lookup_widget(objet_graphique, "label23");

ajouter_patient();

sprintf(Buf0, "%s %s \n\n %s %s \n\n %s %d \n\n %s %ld \n\n %s %d \n\n %s %d \n\n %s %d \n\n", Buf0, P.nom, Buf1,
P.prenom, Buf2, P.age,Buf3,P.cin,Buf4,P.d_arrivee.jour,Buf5,P.d_arrivee.mois,Buf6,P.d_arrivee.annee);

gtk_label_set_text(GTK_LABEL(label23), Buf0);

}

void on_button15_clicked(GtkWidget *objet_graphique, gpointer user_data)
{
personnel P;


GtkWidget *entry16;

entry16= lookup_widget(objet_graphique, "entry16");


P.identifiant= atoi(gtk_entry_get_text(GTK_ENTRY(entry16)));


supprimer_personnel(P.identifiant);

}



}
administration.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "administration.h"
void ajouter_personnel (long int ID)
{ int test,t ;long int z,b;
personnel *p ;char x[20],y[20],a[20];

p=malloc(sizeof(personnel));
FILE *fp,*ft ;
fp=fopen("personnel.txt","r");
ft=fopen("personnelt.txt","w");
test =0;
if(fp!=NULL){while((fscanf(fp,"%s %s %ld %d %s %ld",x,y,&z,&t,a,&b)!=EOF) && (test == 0) )
{

if(ID!=b)
{fprintf(ft,"%s %s %ld %d %s %ld",x,y,z,t,a,b);
}

else test=1;

}

if ((test == 0)&&(fscanf(fp,"%s %s %ld %d %s %ld",x,y,&z,&t,a,&b)==EOF))
{


fprintf (ft,"%s %s %ld %d %s %ld\n",(*p).nom,(*p).prenom,(*p).cin,(*p).age,(*p).fonction,ID);
}
else printf("le personnel deja existe");}





else printf("le fichier n'existe pas");
fclose(fp); fclose(ft);
remove("personnel.txt");
rename("personnelt.txt","personnel.txt");

}
void supprimer_personnel(long int ID)
{int test,t ;long int z,b;
personnel *p ;char x[20],y[20],a[20];

p=malloc(sizeof(personnel));
FILE *fp;
FILE *ft;

fp=fopen("personnel.txt","r");
ft=fopen("bmw.txt","w");


test=0;


while ((fscanf(fp,"%s %s %ld %d %s %ld",x,y,&z,&t,a,&b)!=EOF)&&(test==0))
{if ( b==ID)
{
test=1;


}else fprintf(ft,"%s %s %ld %d %s %ld",x,y,z,t,a,b);
}


if (test==0)
printf("l'identifiant que vous tentez de supprimer n'existe pas");
else printf("le personnel a été supprimé avec succé");
fclose(fp);
fclose(ft);
remove("personnel.txt");
rename("bmw.txt","personnel.txt");
}
void ajouter_patient (void)
{
FILE *f; //pointeur sur fichier
patient *pt;
pt=malloc(sizeof(patient));
int reponse;


f=fopen("patient.txt","a"); //ouverture du fichier en mode apend


fprintf (f,"%s %s %ld %d %d %d %d \n",(*pt).nom,(*pt).prenom,(*pt).cin,(*pt).age,(*pt).d_arrivee.jour,(*pt).d_arrivee.mois,(*pt).d_arrivee.annee);
fclose (f);

}

void supprimer_patient (void)
{
FILE *f,*f1;
patient *pt;
long int cin1;
pt=malloc(sizeof(patient));
printf("entrez cin");
scanf("%ld",&cin1);
f=fopen("patient.txt","r");
f1=fopen("patient1.txt","w");
while(fscanf(f,"%s %s %ld %d %d %d %d \n",(*pt).nom,(*pt).prenom,&(*pt).cin,&(*pt).age,&(*pt).d_arrivee.jour,&(*pt).d_arrivee.mois,&(*pt).d_arrivee.annee)!=EOF)
{
if (cin1 != (*pt).cin)
fprintf(f1,"%s %s %ld %d %d %d %d \n",(*pt).nom,(*pt).prenom,(*pt).cin,(*pt).age,(*pt).d_arrivee.jour,(*pt).d_arrivee.mois,(*pt).d_arrivee.annee);
}
fclose (f);
fclose(f1);
remove("patient.txt");
rename("patient1.txt","patient.txt");

}
A voir également: