2011-09-20 3 views
0

Je reçois cet avertissement:compilateur du langage avertissement ..C (question de type ..)

499: warning: conversion lacks type at end of format 

ligne 499 est:

char query [512]; 
    sprintf(query, "SELECT IFNULL(SUM(Netto_Acquisto),0) AS 'Totale acquisti mese' from Acquisti WHERE mid(Data_Acquisto,6,2)='%'",mese); 

mese est déclaré comme: char mese[3]; Netto_Acquisto est char[9]; - -> dans une base MySQL est décimal (9.2) Data_Acquisto est char[10]; -> MySQL est la date

Désolé de vous déranger ... Merci s beaucoup

Répondre

4

Vous ne semblez pas spécifier le type réel de l'argument à %, si mese sa chaîne devrait être %s.

+0

vous avez raison .... désolé ... j'ai raté le s. Maintenant, le compilateur ne se plaint plus, mais je reçois un "SEGMENTATION FAULT" lors de l'exécution ... quel est, selon vous, le problème? – Vera

+0

assurez-vous que mese est terminé avec '\ 0'. – roni

+0

Pourriez-vous s'il vous plaît dire ce que je devrais faire? devrais-je ajouter \ 0 à la fin de la requête sprintf? Est-ce la raison pour laquelle je reçois SEGMENTATION FAULT "? Merci – Vera

1

Ici, vous avez manqué le spécificateur de format tel que vous l'avez écrit comme % dans le code. Il suffit de s'en occuper pour avoir la réponse.

0

sprintf(query, "SELECT IFNULL(SUM(%s),0) AS \'Totale acquisti mese\' from Acquisti WHERE mid(%s,6,2)=%s",Netto_Acquisto,mese,Data_Acquisto); vous avez oublié de mentionner les séquences d'échappement et les spécificateurs de format.

Questions connexes