[API MySQL] Segmentation fault
Bonjour à tous,
Je suis un peu (beaucoup) perplexe suite à l'apparition de l'erreur Segmentation fault dans mon appli.
En effet, voilà un code qui fonctionne :
Code:
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
| #include </usr/local/mysql/include/mysql.h>
#include <stdio.h>
#define CFG_HOTE "monhote"
#define CFG_BASE "mabase"
#define CFG_USER "monuser"
#define CFG_PWD "monpwd"
int main(void) {
MYSQL mysql;
MYSQL_RES * resultat;
MYSQL_ROW enr;
char sql[250];
mysql_connect(&mysql, CFG_HOTE, CFG_USER, CFG_PWD);
mysql_select_db(&mysql, CFG_BASE);
strcpy(sql, "SELECT * ");
strcat(sql, "FROM _suppliers ");
strcat(sql, "WHERE isActive = 1");
mysql_query(&mysql, sql);
resultat = mysql_use_result(&mysql);
while ((enr = mysql_fetch_row(resultat))) {
printf("%s %s %s\n", enr[0], enr[1], enr[2]);
}
mysql_free_result(resultat);
mysql_close(&mysql);
return(0);
} |
Seulement, j'aimerais déporter toute la requête SQL dans une nouvelle fonction suppliers().
Je modifie donc la fonction main comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include </usr/local/mysql/include/mysql.h>
#include <stdio.h>
#define CFG_HOTE "monhote"
#define CFG_BASE "mabase"
#define CFG_USER "monuser"
#define CFG_PWD "monpwd"
int main(void) {
MYSQL mysql;
mysql_connect(&mysql, CFG_HOTE, CFG_USER, CFG_PWD);
mysql_select_db(&mysql, CFG_BASE);
suppliers();
mysql_close(&mysql);
return(0);
} |
et créé ma fonction suppliers() comme tel :
Code:
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
| int suppliers(void) {
MYSQL mysql;
MYSQL_RES * resultat;
MYSQL_ROW enr;
char sql[250];
strcpy(sql, "SELECT * ");
strcat(sql, "FROM _suppliers ");
strcat(sql, "WHERE isActive = 1");
mysql_query(&mysql, sql);
resultat = mysql_use_result(&mysql);
while ((enr = mysql_fetch_row(resultat))) {
printf("%s %s %s\n", enr[0], enr[1], enr[2]);
}
mysql_free_result(resultat);
return(1);
} |
C'est à ce moment-là que le Segmentation fault apparaît à l'exécution de l'appli .. et je n'arrive pas à savoir pourquoi un simple copié/collé de mon traitement dans une autre fonction peut provoquer cette erreur.
J'essaie donc de savoir d'où peut venir le problème et dans ma phase de debug, je me rends compte qu'il me suffit de commenter la boucle while pour ne plus avoir cette erreur.
Je tiens à préciser que ça fait seulement deux jours que je fais du C et que je capte pas toujours tout. :aie:
Quelque chose m'aurait échappé lors de l'externalisation de mon traitement ?
:merci: