[問題] sprintf 沒有確實的將值印到陣列內
遇到的問題: (題意請描述清楚)
我用VC2005寫一個資料庫存取程式,我用sprintf將我的指令和參數格式化得寫入一
個buff,再將此字串buff當作query送入資料庫,程式大概架構如下:
main(){
MYSQL mysql;
//格式化指令
char *cmd="select * from TABLE where num=%d and (time=%d or time=%d)
order by TABLE_id desc";
//query字串的buff
char query[128];
//將格式畫的指令和參數寫入buff
sprintf_s(query,128,cmd,num,query_time,query_time-10);
//下query
mysql_query(&mysql,query);
...
...
}
問題出在sprintf_s那行,格式中需要填入三個參數皆為%d,分別為num,query_time,
query_time-10。第三個%d永遠都是0,我用debug mode下去逐步執行,不管怎麼改參數
或是格式順序,第三個%d永遠都是0。
希望得到的正確結果:
字串query應該為:select * from TABLE where num=1 and ( time= 1259140931 or
time= 1259140921 ) order by TABLE_id desc
程式跑出來的錯誤結果:
select * from TABLE where num=1 and ( time= 1259140931 or time= 0 )
order by TABLE_id desc;
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
win xp sp3 vc2005
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.129.25.48
→
11/25 20:16, , 1F
11/25 20:16, 1F
→
11/25 20:17, , 2F
11/25 20:17, 2F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章