2011-09-20 84 views
0

我得到這樣的警告:編譯器警告..C語言(類問題..)

499: warning: conversion lacks type at end of format 

行499:

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

梅塞聲明爲:char mese[3]; Netto_Acquisto是char[9]; - - >在mysql中是十進制(9.2) Data_Acquisto是char[10]; - >在mysql中是日期

對不起打擾你...謝謝很多

回答

4

你似乎沒有指定在%參數的實際類型,如果mese其字符串它應該是%s

+0

你是對的....對不起...我確實想念s。現在編譯器不再抱怨了,但是在執行過程中我得到了「SEGMENTATION FAULT」。你認爲這可能是什麼問題? – Vera

+0

確保mese以'\ 0'結尾。 – roni

+0

你能告訴我該怎麼辦?我應該在sprintf查詢的末尾添加\ 0嗎?這就是我爲什麼得到分段錯誤的原因嗎?「謝謝 – Vera

1

在這裏你錯過了格式說明符,因爲你在代碼中寫下了這樣的%。 只要照顧它,你就會得到答案。

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);你忘了提到轉義序列和格式說明符。