Как поместить данные из буфера в массив в C? - PullRequest
1 голос
/ 13 апреля 2011

У меня есть некоторые данные в буфере и я хочу поместить эти данные в массив.

 typedef struct chunk 
 {
 char data[300];    /* the bufferr. */
 } CHUNK;
 char *buffer, CHUNK c [100];

Предполагая, что у меня есть данные в буфер, как я могу поместить 300 символов в блок? Я новичок в C, поэтому, пожалуйста, объясните мне простой пример.

Спасибо, Kevin

Ответы [ 3 ]

3 голосов
/ 13 апреля 2011

Объявление недействительно, но я думаю, что вы имеете в виду:

typedef struct chunk 
 {
     char data[300];    /* the bufferr. */
 } CHUNK;

 char *buffer;
 CHUNK c [100];

Если я правильно понимаю ваш вопрос (что я совершенно не уверен, что понимаю), код будет выглядеть примерно так:

 int j = 0;
 char *bp = buffer;
 while (*bp)
 {
     strncpy (c [j] .data, bp, 300);  // copy data into next item
     bp += strlen (bp);
     ++ j;
 }
1 голос
/ 13 апреля 2011

В C вы можете скопировать память из одной области в другую, используя memcpy().Прототип для memcpy():

void *memcpy(void *dst, const void *src, size_t n);

, и описание таково, что он копирует n байтов из src в dst и возвращает dst.

, чтобы скопировать 300 байтов из b в a, где и a, и b указывают на что-то полезное, b содержит не менее 300 байтов данных, а a указывает не менее 300 байтов пространстваВы можете написать, вы должны сделать:

memcpy(a, b, 300);

Теперь ваша задача должна быть примерно такой:

typedef struct chunk 
{
    char data[300];
} CHUNK;
char *buffer;
CHUNK c[100];
size_t i;

/* make buffer point to useful data, and then: */
for (i=0; i < 300; ++i)
    memcpy(c[i].data, buffer+i*300, 300);
1 голос
/ 13 апреля 2011

Вы можете использовать strncpy .

strncpy( data, buffer, 299 ) ;

Оставление последнего индекса для символа завершения '\0'. Или задайте размер массива 301, а затем используйте strncpy для 300 элементов.

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