Bonjour et joyeuses fêtes a tous ^^
J'ai un problème. J'ai une fonction qui vient lire des paramètres dans un fichier de configuration. Celle ci vient remplir une structure dont je revoie le pointeur. Voici le code
struct param
{
int success ;
char * temp;
char * csv;
char * dir;
int com;
int baudrate ;
};
struct param *setting()
{
FILE * access ;
FILE * test;
char * settings = "C:\\Documents and Settings\\Kurpeus\\Bureau\\Visual Projects\\settings.ini";
char * data = malloc(sizeof(data)*255);
char * temp = malloc(sizeof(temp)*255);
char * csv = malloc(sizeof(csv)*255);
char * dir = malloc(sizeof(dir)*255);
char * com = malloc(sizeof(com)*8);
char * baudrate = malloc(sizeof(baudrate)*16);
char* end ;
long n;
struct param load ;
struct param *pLoad ;
pLoad = &load;
// Lecture des paramètres de configuration :
if((access = fopen( settings, "r")) == NULL)
{
// Le fichier n'existe pas
pLoad->success = 0;
return pLoad;
}
else
{
// Fichier de conf trouvé
pLoad->success = 1;
// Lecture du fichier de configuration
GetPrivateProfileString("files","temp", "", temp, 255, settings );
GetPrivateProfileString("files","csv", "", csv, 255, settings );
GetPrivateProfileString("files","dir", "", dir, 255, settings );
GetPrivateProfileString("files","com", "", com, 8, settings );
GetPrivateProfileString("files","baudrate", "", baudrate, 16, settings );
// On initialise les variables pour les passer à la fênetre paramètre
pLoad->temp = temp;
pLoad->csv = csv;
pLoad->dir = dir;
// Conversion d'une chaine en un entier
n = strtol(baudrate, &end, 10);
pLoad->baudrate = n;
n = strtol(com, &end, 10);
pLoad->com = n;
fclose(access);
return pLoad;
}
}
J'ai testé les valeurs pLoad->temp ect, elles sont bien initialisées. Maintenant voici la fonction appellante :
struct param
{
int success ;
char * temp;
char * csv;
char * dir;
int com;
int baudrate ;
};
int on_properties_activate(GtkMenuItem * menuitem,
gpointer user_data)
{
GtkWidget *paramWindow;
GtkWidget *entry1 ;
GtkWidget *entry2 ;
GtkWidget *entry3 ;
FILE * test;
struct param *pInitParam;
paramWindow = create_paramWindow();
pInitParam = setting();
entry1 = lookup_widget(paramWindow, "entry1");
test = fopen("c:\\test.txt", "w");
fprintf(test, "%s", pInitParam->csv);
fclose(test);
}
Ces deux fonctions sont dans des fichiers différents. Lors de la compilation, je n'ai aucune erreur. Cependant quand je lance le programme
j'obtient un message d'erreur handle exception ....access violation
Je ne vois pas trop d'ou ca vient
Dans la fonction appellante, je teste juste la valeur retourné en l'inscrivant dans un fichier ( je developpe une appli sous glade, et j'ai pas de console pour visualiser les erreurs)
(la partie glade n'est pas interressante et n'intervient pas dans l'erreur)
Merci d'avance