Probléme avec sprintf() sous linux

moooonaaaa Messages postés 56 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 29 novembre 2010 - 10 avril 2008 à 12:34
moooonaaaa Messages postés 56 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 29 novembre 2010 - 10 avril 2008 à 17:29
Salut,

j'ai un probléme dans mon code en gcc sous linux.

lors de la compilation j'obtient les messages suivants:

"access_log.c:1033: warning: left-hand operand of comma expression has no effect

access_log.c:1033: warning: left-hand operand of comma expression has no effect

access_log.c:1033: warning: left-hand operand of comma expression has no effect

access_log.c:1033: warning: statement with no effect

access_log.c:1039: warning: left-hand operand of comma expression has no effect

access_log.c:1039: warning: left-hand operand of comma expression has no effect

access_log.c:1039: warning: left-hand operand of comma expression has no effect

access_log.c:1039: warning: statement with no effect

access_log.c:1044: warning: left-hand operand of comma expression has no effect

access_log.c:1044: warning: left-hand operand of comma expression has no effect

access_log.c:1044: error: wrong type argument to unary plus"

La partie du code de la ligne 1033 jusq'au 1044 est la suivante:

" sprintf(req,"select * from connection where sec='%9ld' and
usec='%03d'",(long int) current_time.tv_sec, (int) current_time.tv_usec
/ 1000);

mysql_query(conn,req);

result = mysql_store_result(conn);

num = mysql_num_rows(result);

if (num== 0)

{

sprintf(req,"insert into connection values('%9ld','%03d')",(long int)
current_time.tv_sec,(int) current_time.tv_usec / 1000);

mysql_query(conn,req);mysql_commit(conn);}

// on libère la mémoire prise pour les résultats


mysql_free_result(result);

sprintf(req,"select * from client where adr_IP_client ='%s'",client);"

quelqu'un peut maider SVP.

merci d'avace.

6 réponses

cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
10 avril 2008 à 12:43
Bonjour,


 


req est déclaré omment ?



Jean-François
0
moooonaaaa Messages postés 56 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 29 novembre 2010
10 avril 2008 à 13:28
salut,
char req[200];
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
10 avril 2008 à 14:44
Je viens de tester les 3 sprintf() sous Visual C++ et tout fonctionne !

J'ai remplacé (long int)sec par (long)sec
et (int)usec / 1000 par (int)(usec / 1000)
mais même avant ces modifs tout fonctionne.

#include <stdio.h>
#include <Winldap.h>
void main()
{
   LDAP_TIMEVAL current_time = {21,123456}; // s et µs
   char *client = "Client";
   char req[200];
  
   sprintf(req
          ,"select * from connection where sec='%9ld' and usec='%03d'"
          ,(long)current_time.tv_sec,(int)(current_time.tv_usec / 1000));
   printf(req);
   printf("\n");



   sprintf(req
          ,"insert into connection values('%9ld','%03d')"
          ,(long)current_time.tv_sec,(int)(current_time.tv_usec / 1000));
   printf(req);
   printf("\n");



   sprintf(req,"select * from client where adr_IP_client ='%s'",client);
   printf(req);
   printf("\n");
}


Ce qui donne :

select * from connection where sec='       21' and usec='123'
insert into connection values('       21','123')
select * from client where adr_IP_client ='Client'

Est-ce que le remplacement des ' par \' change quelque chose ?
 (... where sec=\'%9ld\' and usec=\'%03d\')

Jean-François
0
moooonaaaa Messages postés 56 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 29 novembre 2010
10 avril 2008 à 16:11
Salut,
je vous remercie  beaucoup.
le remplacement des ' par \' changent plusieurs choses.
Le probléme persiste malgrés le remplacement.
quel est l'origine de ce message d'aprés vous.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
10 avril 2008 à 16:36
Malheureusement je ne peux pas vous en dire plus arrivé là !
Le code est correct, il faut voir avec quelqu'un maîtrisant la compilation gcc sous Linux, il doit y avoir un problème de paramétrage.

Jean-François
0
moooonaaaa Messages postés 56 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 29 novembre 2010
10 avril 2008 à 17:29
salem,
je comprends pas ces messages.
est ce que vous pouvez m'expliquer les significations de ces messages d'erreur et warning
0
Rejoignez-nous