我需要在两个单独的步骤中执行此操作,但到目前为止,我找不到这样做的方法。
首先,我需要将一个double变量转换为char变量(并保存在该变量中)。我注意到类型转换在C和Java /其他语言中的工作方式不同。如何将变量转换为字符串/ char?
其次,我需要连接字符串,总共有6个字符串变量需要连接,我只找到ICarBlueprint goodcarBlueprint = // Assigned somewhere else
ICar x = goodcarBlueprint.getFactory().build(goodcarBluePrint);
函数只需要2个参数。
这些是我想要构建的字符串:
strcat
然后我需要连接的字符串才能在char *queryOne = "INSERT INTO location (id, carid, ownerid, lat, long, speed) VALUES (,2, 1, ";
char *queryTwo = lat; // lat is a double
char *queryThree = ",";
char *queryFour = longatude; // longatude is a double
char *queryFive = ",";
char *querySix = speed; // speed is a double
中作为一个长字符串
编辑:可能,这应该转换我认为的数据类型?
(mysql_query(conn, query))
答案 0 :(得分:1)
在您的情况下,您可以使用:
#define MAXSQL 256
char sql[MAXSQL];
snprintf(sql, MAXSQL, "%s %f , %f , %f", queryOne, lat, longatude, speed);
snprintf
函数写入缓冲区,这是它的第一个参数。 http://www.cplusplus.com/reference/cstdio/snprintf/?kw=snprintf
现在,您可以随意使用sql
字符串。
请注意,我使用的是snprintf而不是sprintf。这是为了避免潜在的缓冲区溢出。
此外,不要反复使用strcat,因为这会导致Shlemiel成为Painter算法,并且每次调用strcat都会变慢,因为strcat必须从头开始并找到null终止符。有关详细信息,请参阅http://www.joelonsoftware.com/articles/fog0000000319.html。