Re: [TECH] Probleme segfault avec pgm C
patrice mahy wrote: Il y une question qui me turlupine depuis le début : à quoi servent le tableau de caractères string et les 2 entiers t et r ? Il ne sont pas utilisés. ils ne sont pas utilisés par le programme ( mais pas d'erreur de compilation ??? ) et si je les enlève, c'est tout de suite le SEGFAULT. de plus, je ne peux pas rajouter de variable ni étendre string sans avoir de SEGFAULT ... Quid ? Ils doivent avoir le mérite de réserver de la place sur la pile, que quelqu'un d'autre doit jardiner. Ils servent involontairement d'amortisseur à bug :) Amicalement, -- Vincent Stehlé Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
Le 05/06/2010 20:09, Vincent a écrit : patrice mahy wrote: je trouvais le programme trop simple pour avoir un bug caché, mais bon, le C est une usine à gaz d'origine ... Disons qu'il est bas niveau. Il ne t'aide pas beaucoup pour ce qui est gestion de la mémoire... [..] quelqu'un pourrait il me donner les instructions pour tester les sorties ? Tu fais dans le goût de ce que tu as fait pour 'mysql_query', mais à chaque appel de fonction. étant sous linux , je pourrais insérer des break points et lancer le pgm par gdb, j'ai besoin d'un coup de main, n'ayant jamais eu affaire à ces outils. Tu ferais bien de commencer avec une GUI par dessus gdb, comme 'ddd' par exemple. Bon courage, Il y une question qui me turlupine depuis le début : à quoi servent le tableau de caractères string et les 2 entiers t et r ? ils ne sont pas utilisés par le programme ( mais pas d'erreur de compilation ??? ) et si je les enlève, c'est tout de suite le SEGFAULT. de plus, je ne peux pas rajouter de variable ni étendre string sans avoir de SEGFAULT ... Quid ? Patrice Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
Vincent BRACH wrote: [..] - query=select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno; pas propre du tout me mettre un char * = une chaine; Pas propre ? Ca se discute, ça. Où est le problème ? A moins que les fonctions sql veuillent désalouer elles-mêmes de la mémoire, ce qu'il fait est valide, non ? surtout que ton pointeur query n'est jamais alloué, A partir du moment où tu l'affectes, il pointe sur quelque chose. Où est le problème ? Il doit y avoir un truc qui m'échappe... Pour le reste (boucles, codes de retour) tout à fait d'accord avec toi. Amicalement, -- Vincent Stehlé Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
Le 05/06/2010 19:09, Vincent a écrit : Vincent BRACH wrote: [..] - query=select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno; pas propre du tout me mettre un char * = une chaine; Pas propre ? Ca se discute, ça. Où est le problème ? A moins que les fonctions sql veuillent désalouer elles-mêmes de la mémoire, ce qu'il fait est valide, non ? surtout que ton pointeur query n'est jamais alloué, A partir du moment où tu l'affectes, il pointe sur quelque chose. Où est le problème ? Il doit y avoir un truc qui m'échappe... Pour le reste (boucles, codes de retour) tout à fait d'accord avec toi. Amicalement, je ne cherche pas à faire propre mais maintenabble d'une façon simple. J'ai repris un bout de code que j'ai adapté à ma BDD comme j'ai pu .Je ne vois pas tres bien ce que çà apporte de faire une boucle ... et j'avais commencé à faire sur deux ou trois champs et le besoin ne s'en était pas fait sentir. Pour ce qui est de la propreté du code, je suis complètement novice en C et plus habitué à des languages moins exigeants au niveau mémoire ( PHP ou Perl ) où les Segfaults sont inconnues ... Amicalement Patrice Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
patrice mahy wrote: je ne cherche pas à faire propre mais maintenabble d'une façon simple. Des fois, ça va ensemble :) Celà dit, tu codes tes programmes comme tu veux. Tout ce que je regardais, c'est si c'était bien du C valide, sans bug caché. Ciao, -- Vincent Stehlé Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
Le 05/06/2010 19:25, Vincent a écrit : patrice mahy wrote: je ne cherche pas à faire propre mais maintenabble d'une façon simple. Des fois, ça va ensemble :) Celà dit, tu codes tes programmes comme tu veux. Tout ce que je regardais, c'est si c'était bien du C valide, sans bug caché. Ciao, je trouvais le programme trop simple pour avoir un bug caché, mais bon, le C est une usine à gaz d'origine ... J'ai essayé avec un boucle, mais le résultat est le même quelqu'un pourrait il me donner les instructions pour tester les sorties ? étant sous linux , je pourrais insérer des break points et lancer le pgm par gdb, j'ai besoin d'un coup de main, n'ayant jamais eu affaire à ces outils. Help Patrice Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
patrice mahy wrote: je trouvais le programme trop simple pour avoir un bug caché, mais bon, le C est une usine à gaz d'origine ... Disons qu'il est bas niveau. Il ne t'aide pas beaucoup pour ce qui est gestion de la mémoire... [..] quelqu'un pourrait il me donner les instructions pour tester les sorties ? Tu fais dans le goût de ce que tu as fait pour 'mysql_query', mais à chaque appel de fonction. étant sous linux , je pourrais insérer des break points et lancer le pgm par gdb, j'ai besoin d'un coup de main, n'ayant jamais eu affaire à ces outils. Tu ferais bien de commencer avec une GUI par dessus gdb, comme 'ddd' par exemple. Bon courage, -- Vincent Stehlé Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
[TECH] Probleme segfault avec pgm C
Salut j'essaie de me remettre au langage C et m'attelle à un programme de mise à jour d'une BDD Mysql via un pgm en C. tout se passe bien si je ne lis que dix champs, mais dès que je passe à 11 il me renvoie une SegFault ... C'est un pgm tout bete : #include mysql/mysql.h #include string.h #include stdio.h #include stdlib.h void main(){ MYSQL *mysql; MYSQL_RES *res; MYSQL_ROW row; char *query,string[2500]; //char *query1; int t,r; mysql_init(mysql); if (!mysql_real_connect(mysql,localhost,user,mdp,base,0,NULL,0)) { printf( Error connecting to database: %s\n,mysql_error(mysql)); } else printf( c'est bon ); query=select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno; # if (mysql_query(mysql, query)) # { # fprintf(stderr, %s\n, mysql_error(mysql)); # exit(0); # } # res = mysql_use_result(mysql); while ((row = mysql_fetch_row(res)) != NULL) # { printf( %s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n,row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9]); } mysql_free_result(res); # mysql_close(mysql); } cette version marche mais des que je lis un 11 champ, c'est la bérézina ... Si un pro du C pouvait me dépanner Merci d'avance Patrice Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
Bonjour Patrice et tout le monde, Le 02/06/2010 10:01, patrice mahy a écrit : j'essaie de me remettre au langage C [...] Bon courage :-) Sinon, pourquoi ce post est-il attaché à [ASSO] Cooptation Conseil d'Administration ??? Patrice, en vieux de la vieille chez Laz, tu devrais montrer l'exemple = nétiquette, toussa ... http://www.linux-azur.org/communaute/mailing-list Salutations ensoleillées, -- Véronique Fritière [GnuPG_key 1024D/BE963B35] Présidente et Chargée de Communication http://www.linux-azur.org Mobile 06 99 21 01 86 http://rustines.net Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
Le 02/06/2010 10:25, verow a écrit : Bonjour Patrice et tout le monde, Le 02/06/2010 10:01, patrice mahy a écrit : j'essaie de me remettre au langage C [...] Bon courage :-) Sinon, pourquoi ce post est-il attaché à [ASSO] Cooptation Conseil d'Administration ??? Patrice, en vieux de la vieille chez Laz, tu devrais montrer l'exemple = nétiquette, toussa ... http://www.linux-azur.org/communaute/mailing-list Salutations ensoleillées, Désolé Véro, j'ai eu la flemme de taper l'adresse de la ML et ai repris un de tes posts que j'ai requalifié. Je ne le referai plus. Patrice Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
Salut Patrice #include mysql/mysql.h #include string.h #include stdio.h #include stdlib.h void main(){ MYSQL *mysql; MYSQL_RES *res; MYSQL_ROW row; char *query,string[2500]; //char *query1; int t,r; mysql_init(mysql); if (! mysql_real_connect(mysql,localhost,user,mdp,base,0,NULL,0)) { printf( Error connecting to database: %s\n,mysql_error(mysql)); } else printf( c'est bon ); query=select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno; if (mysql_query(mysql, query)) { fprintf(stderr, %s\n, mysql_error(mysql)); exit(0); } res = mysql_use_result(mysql); ICI je pense que tu devrais tester ton pointeur res savoir s'il n'est pas NULL car si un problème est survenu pendant la requette (genre le n11 qui n'existe pas) tu peux te retrouver à passer à ta fonction suivante (mysql_fetch_row) un res=NULL while ((row = mysql_fetch_row(res)) != NULL) { printf( %s|%s|%s|%s|%s|%s|%s|%s|%s|%s \n,row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9]); } mysql_free_result(res); mysql_close(mysql); } Perso je n'ai (mais beaucoup) travaillé qu'avec postgresql en C (et pas mysql en C) mais ça à l'air assez similaire. En tout état de cause je pense qu'un petit nettoyage de ton source est nécessaire à plusieurs niveau : - query=select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno; pas propre du tout me mettre un char * = une chaine; surtout que ton pointeur query n'est jamais alloué, contrairement à ton tableau de caractère string qui est alloué statiquement (2500 en taille ça va c'est peinard...) Dans ce genre de cas privilégie plutôt quelque chose comme ça : char query[2500]; sprintf(query, select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno); //stdio.h ou strcpy(query, select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno); //string.h - il serait plus propre également d'utiliser un peu plus les boucles for ;) : à la place de printf( %s|%s|%s|%s|%s|%s|%s|%s|%s|%s \n,row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9]); plutôt faire un : for (i=0;i10;i++) printf(%s|, row[i]); // certe tu auras un '|' pour le dernier mais bon... printf(\n); - Tu pourrais faire une requette du type select * from keno et ensuite récupérer le résultat et identifier indépendamment chacun de tes champs - Je pense également qu'il serait grandement préférable qu'à chaque appel de fonction (surtout issue de lib C Sql) il faut récupérer et tester le retour de la fonction (pointeur ou valeur) ce que tu ne fais pas pour la variable res (retour de mysql_use_result) que tu passe directement à mysql_fetch_row. Également tester les retour de 'mysql_free_result' et de 'mysql_close' même si moins critique mais évite d'ignorer les fuites mémoires en cas de soucis... Voila, j'espère que ça pourra t'aider un peu. @+ Vincent Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
Salut Patrice #include mysql/mysql.h #include string.h #include stdio.h #include stdlib.h void main(){ MYSQL *mysql; MYSQL_RES *res; MYSQL_ROW row; char *query,string[2500]; //char *query1; int t,r; mysql_init(mysql); if (! mysql_real_connect(mysql,localhost,user,mdp,base,0,NULL,0)) { printf( Error connecting to database: %s\n,mysql_error(mysql)); } else printf( c'est bon ); query=select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno; if (mysql_query(mysql, query)) { fprintf(stderr, %s\n, mysql_error(mysql)); exit(0); } res = mysql_use_result(mysql); ICI je pense que tu devrais tester ton pointeur res savoir s'il n'est pas NULL car si un problème est survenu pendant la requette (genre le n11 qui n'existe pas) tu peux te retrouver à passer à ta fonction suivante (mysql_fetch_row) un res=NULL while ((row = mysql_fetch_row(res)) != NULL) { printf( %s|%s|%s|%s|%s|%s|%s|%s|%s|%s \n,row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9]); } mysql_free_result(res); mysql_close(mysql); } Perso je n'ai (mais beaucoup) travaillé qu'avec postgresql en C (et pas mysql en C) mais ça à l'air assez similaire. En tout état de cause je pense qu'un petit nettoyage de ton source est nécessaire à plusieurs niveau : - query=select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno; pas propre du tout me mettre un char * = une chaine; surtout que ton pointeur query n'est jamais alloué, contrairement à ton tableau de caractère string qui est alloué statiquement (2500 en taille ça va c'est peinard...) Dans ce genre de cas privilégie plutôt quelque chose comme ça : char query[2500]; sprintf(query, select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno); //stdio.h ou strcpy(query, select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno); //string.h - il serait plus propre également d'utiliser un peu plus les boucles for ;) : à la place de printf( %s|%s|%s|%s|%s|%s|%s|%s|%s|%s \n,row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9]); plutôt faire un : for (i=0;i10;i++) printf(%s|, row[i]); // certe tu auras un '|' pour le dernier mais bon... printf(\n); - Tu pourrais faire une requette du type select * from keno et ensuite récupérer le résultat et identifier indépendamment chacun de tes champs - Je pense également qu'il serait grandement préférable qu'à chaque appel de fonction (surtout issue de lib C Sql) il faut récupérer et tester le retour de la fonction (pointeur ou valeur) ce que tu ne fais pas pour la variable res (retour de mysql_use_result) que tu passe directement à mysql_fetch_row. Également tester les retour de 'mysql_free_result' et de 'mysql_close' même si moins critique mais évite d'ignorer les fuites mémoires en cas de soucis... Voila, j'espère que ça pourra t'aider un peu. @+ Vincent Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
le nombre d'élémaent dans une ligne peut s'obtenir par mysql_num_fields(result)http://dev.mysql.com/doc/refman/5.0/en/mysql-num-fields.html . tu as aboslument besoin de vérifier que tu n'accède pas à plus d'éléments qu'il y en a dans la réponse. http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html Le 2 juin 2010 11:06, Vincent BRACH v.br...@smie.com a écrit : Salut Patrice #include mysql/mysql.h #include string.h #include stdio.h #include stdlib.h void main(){ MYSQL *mysql; MYSQL_RES *res; MYSQL_ROW row; char *query,string[2500]; //char *query1; int t,r; mysql_init(mysql); if (! mysql_real_connect(mysql,localhost,user,mdp,base,0,NULL,0)) { printf( Error connecting to database: %s\n,mysql_error(mysql)); } else printf( c'est bon ); query=select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno; if (mysql_query(mysql, query)) { fprintf(stderr, %s\n, mysql_error(mysql)); exit(0); } res = mysql_use_result(mysql); ICI je pense que tu devrais tester ton pointeur res savoir s'il n'est pas NULL car si un problème est survenu pendant la requette (genre le n11 qui n'existe pas) tu peux te retrouver à passer à ta fonction suivante (mysql_fetch_row) un res=NULL while ((row = mysql_fetch_row(res)) != NULL) { printf( %s|%s|%s|%s|%s|%s|%s|%s|%s|%s \n,row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9]); } mysql_free_result(res); mysql_close(mysql); } Perso je n'ai (mais beaucoup) travaillé qu'avec postgresql en C (et pas mysql en C) mais ça à l'air assez similaire. En tout état de cause je pense qu'un petit nettoyage de ton source est nécessaire à plusieurs niveau : - query=select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno; pas propre du tout me mettre un char * = une chaine; surtout que ton pointeur query n'est jamais alloué, contrairement à ton tableau de caractère string qui est alloué statiquement (2500 en taille ça va c'est peinard...) Dans ce genre de cas privilégie plutôt quelque chose comme ça : char query[2500]; sprintf(query, select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno); //stdio.h ou strcpy(query, select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno); //string.h - il serait plus propre également d'utiliser un peu plus les boucles for ;) : à la place de printf( %s|%s|%s|%s|%s|%s|%s|%s|%s|%s \n,row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9]); plutôt faire un : for (i=0;i10;i++) printf(%s|, row[i]); // certe tu auras un '|' pour le dernier mais bon... printf(\n); - Tu pourrais faire une requette du type select * from keno et ensuite récupérer le résultat et identifier indépendamment chacun de tes champs - Je pense également qu'il serait grandement préférable qu'à chaque appel de fonction (surtout issue de lib C Sql) il faut récupérer et tester le retour de la fonction (pointeur ou valeur) ce que tu ne fais pas pour la variable res (retour de mysql_use_result) que tu passe directement à mysql_fetch_row. Également tester les retour de 'mysql_free_result' et de 'mysql_close' même si moins critique mais évite d'ignorer les fuites mémoires en cas de soucis... Voila, j'espère que ça pourra t'aider un peu. @+ Vincent Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ *** Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***
Re: [TECH] Probleme segfault avec pgm C
Le 02/06/2010 11:06, Vincent BRACH a écrit : Salut Patrice #includemysql/mysql.h #includestring.h #includestdio.h #includestdlib.h void main(){ MYSQL *mysql; MYSQL_RES *res; MYSQL_ROW row; char *query,string[2500]; //char *query1; int t,r; mysql_init(mysql); if (! mysql_real_connect(mysql,localhost,user,mdp,base,0,NULL,0)) { printf( Error connecting to database: %s\n,mysql_error(mysql)); } else printf( c'est bon ); query=select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno; if (mysql_query(mysql, query)) { fprintf(stderr, %s\n, mysql_error(mysql)); exit(0); } res = mysql_use_result(mysql); ICI je pense que tu devrais tester ton pointeur res savoir s'il n'est pas NULL car si un problème est survenu pendant la requette (genre le n11 qui n'existe pas) tu peux te retrouver à passer à ta fonction suivante (mysql_fetch_row) un res=NULL while ((row = mysql_fetch_row(res)) != NULL) { printf( %s|%s|%s|%s|%s|%s|%s|%s|%s|%s \n,row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9]); } mysql_free_result(res); mysql_close(mysql); } Perso je n'ai (mais beaucoup) travaillé qu'avec postgresql en C (et pas mysql en C) mais ça à l'air assez similaire. En tout état de cause je pense qu'un petit nettoyage de ton source est nécessaire à plusieurs niveau : - query=select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno; pas propre du tout me mettre un char * = une chaine; surtout que ton pointeur query n'est jamais alloué, contrairement à ton tableau de caractère string qui est alloué statiquement (2500 en taille ça va c'est peinard...) Dans ce genre de cas privilégie plutôt quelque chose comme ça : char query[2500]; sprintf(query, select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno); //stdio.h ou strcpy(query, select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno); //string.h - il serait plus propre également d'utiliser un peu plus les boucles for ;) : à la place de printf( %s|%s|%s|%s|%s|%s|%s|%s|%s|%s \n,row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9]); plutôt faire un : for (i=0;i10;i++) printf(%s|, row[i]); // certe tu auras un '|' pour le dernier mais bon... printf(\n); - Tu pourrais faire une requette du type select * from keno et ensuite récupérer le résultat et identifier indépendamment chacun de tes champs - Je pense également qu'il serait grandement préférable qu'à chaque appel de fonction (surtout issue de lib C Sql) il faut récupérer et tester le retour de la fonction (pointeur ou valeur) ce que tu ne fais pas pour la variable res (retour de mysql_use_result) que tu passe directement à mysql_fetch_row. Également tester les retour de 'mysql_free_result' et de 'mysql_close' même si moins critique mais évite d'ignorer les fuites mémoires en cas de soucis... Voila, j'espère que ça pourra t'aider un peu. @+ Vincent Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ *** Apparemment, il n'accepte que 10 champs pour ma table : j'ai essayé avec d'autres champs et il vautre toujours quand je lui demande d'afficher un onzième champ. Le problème reste le même si je fais une boucle avec le nombre de fields. Petite précision, je passe par l'EDI Code::Blocks pour éditer compiler et lance mon programme PAtrice Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***