连续填写一个缓冲区

时间:2010-05-16 13:30:45

标签: c string pointers char printf

我打算在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代码。

5 个答案:

答案 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