Как скопировать содержимое целочисленного массива в символьный указатель? - PullRequest
0 голосов
/ 19 ноября 2011

У меня есть символьный указатель, char *buf; У меня есть массив целых чисел, int console_buffer[256]; Мне нужно скопировать содержимое console_buffer в символьный буфер. Как мне это сделать? buf и console_buffer являются частью различных структур.

Ответы [ 3 ]

1 голос
/ 19 ноября 2011

Исходя из вашего комментария,

buf = malloc(256); // 257 if console_buffer may be full without EOF
/* if you want to allocate just as much space as needed, locate the EOF in console_buffer first */
for(int i = 0; i < 256 && console_buffer[i] != -1; ++i){
    buf[i] = (char)console_buffer[i];
}
0 голосов
/ 19 ноября 2011

Я думаю, что это лучший способ преобразовать значения в char s

int i = 0;
while (i <= 256) {
    buf[i] = (char) console_buffer[i];
    i++;
}
0 голосов
/ 19 ноября 2011

Если вы уже выделили память для buf, и если каждое целое число находится в диапазоне от 0 до 9, вы можете сделать:

for(int i = 0; i < 256; i++)
{
    buf[i] = '0' + console_buffer[i]; /* convert 1 to '1', etc. */
}

Если целые числа больше 9, вы можете использовать функцию sprintf.


Читая ваш новый комментарий, возможно, вы также можете достичь своей цели, читая из буфера консоли непосредственно в массив символов, пока у вас не будет -1 (проверка с помощью сравнения целых чисел, или strcmp, или путем сравнения последних 2 символы до 0 и 1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...