我打算在for循环中连续填充char-pointer数组。要填写的内容是一个整数,所以我需要强制转换。但我没有得到我想要的结果..
for (i=0;i<max0;i++){
sprintf(buf, "%d", content[i]);
}
sprintf替换了孔buf,但我想追加。
for (i=0;i<max0;i++){
buf[i]=(char) contint[i]
}
但这也不行。在我看来,我得到内容[i]的ascii代码。
答案 0 :(得分:2)
sprintf返回写入的char数。您可以在将整数附加到缓冲区时使用它。
类似的东西:
int pos = 0;
for (i=0;i<max0;i++){
pos += sprintf(buf+pos, "%d", content[i]);
}
答案 1 :(得分:1)
您可以使用指针算法完成此操作:
char *p = buf;
for (i=0;i<max;i++)
{
int num_written = sprintf(p, "%d", content[i]);
if(num_written == -1)
{
//error handling
break;
}
p += num_written;
}
答案 2 :(得分:0)
使用它:
for (i=0; i<max0; ++i){
sprintf(buf, "%d", content[i]);
strcat(resultbuf, buf);
}
答案 3 :(得分:0)
我使用snsprintf
解决了这个问题for (i=0;i<max0;i++){
length += snprintf(buf+length, buflen-length, "%d", content[i]);
}
感谢您的回答!!
答案 4 :(得分:0)
我认为这听起来很愚蠢,但我调整了你的代码: -
for (i=0;i<max0;i++){
buf[i]=(char) (48+ contint[i]);
}
//这里48是ascii代码0