【发布时间】:2015-01-27 20:18:38
【问题描述】:
当打印一个带有 int 值的 char[] 时,int 不正确。但是sprintf之后的str的printf输出正确的值。
我正在使用此代码:
int i;
for( i = 0; i < 10; i++){
char str[20];
sprintf(str, "%i", i);
char in[50] = "INSERT INTO `Test` (`Col1`, `Col2`) VALUES ('1', '";
strcat(in, str);
strcat(in, "')");
printf("%s", in);
}
输出:INSERT INTO Test (Col1, Col2) VALUES ('1', 'A&?0')
【问题讨论】:
-
p.s 如果有人可以提出一种更清洁或更有效的构建字符串的方法,请说:)
-
int size = snprintf(NULL, "INSERT INTO 'Test' ('Col1', 'Col2') VALUES ('1', '%d')", i);将为您提供数组的最小大小。 -
顺便说一句,如果只是在最后打印f,就像在您的代码提取中一样,只需忘记str,in和2 strcat,只需在一行代码中使用printf
标签: c