заполнять буфер последовательно - PullRequest
1 голос
/ 16 мая 2010

Я намерен последовательно заполнить массив указателей на символы в цикле for. содержимое для заполнения является целым числом, поэтому мне нужно привести. но я не получил желаемый результат ..

for (i=0;i<max0;i++){
    sprintf(buf, "%d", content[i]);
}

sprintf заменяет дыру буф, но я хочу добавить.

for (i=0;i<max0;i++){
   buf[i]=(char) contint[i]
}

но это тоже не работает. мне кажется, я получаю ascii-код содержания [i].

Ответы [ 5 ]

2 голосов
/ 16 мая 2010

sprintf возвращает количество записанных символов. Вы можете использовать это при добавлении целых чисел в буфер.

Что-то вроде:

int pos = 0;
for (i=0;i<max0;i++){
   pos += sprintf(buf+pos, "%d", content[i]);
}
1 голос
/ 16 мая 2010

Вы можете сделать это, используя арифметику указателей:

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;
}
0 голосов
/ 19 мая 2010

Я думаю, это может звучать глупо, но я настроил твой код примерно так: -

for (i=0;i<max0;i++){ 
   buf[i]=(char) (48+ contint[i]);
} 

// здесь 48 - это код 0

0 голосов
/ 16 мая 2010

я решил с помощью snsprintf

for (i=0;i<max0;i++){
   length += snprintf(buf+length, buflen-length, "%d", content[i]);
}

спасибо за ваши ответы !!

0 голосов
/ 16 мая 2010

используйте это:

for (i=0; i<max0; ++i){
  sprintf(buf, "%d", content[i]);
  strcat(resultbuf, buf);
}
...