Re: [TECH] Probleme segfault avec pgm C

2010-06-09 Par sujet Vincent
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

2010-06-07 Par sujet patrice mahy

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

2010-06-05 Par sujet Vincent
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

2010-06-05 Par sujet patrice mahy

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

2010-06-05 Par sujet Vincent
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

2010-06-05 Par sujet patrice mahy

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

2010-06-05 Par sujet Vincent
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

2010-06-02 Par sujet patrice mahy

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

2010-06-02 Par sujet verow
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

2010-06-02 Par sujet patrice mahy

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

2010-06-02 Par sujet Vincent BRACH
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

2010-06-02 Par sujet Vincent BRACH
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

2010-06-02 Par sujet Philippe Lhardy
 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

2010-06-02 Par sujet patrice mahy

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 ***