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 :
Seulement, j'aimerais déporter toute la requête SQL dans une nouvelle fonction suppliers().
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 #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); }
Je modifie donc la fonction main comme suit :
et créé ma fonction suppliers() comme tel :
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 #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); }
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.
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 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); }
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.
Quelque chose m'aurait échappé lors de l'externalisation de mon traitement ?
![]()
Partager