如何将数据从缓冲区放入C中的数组?

时间:2011-04-13 03:47:29

标签: c

我在缓冲区中有一些数据,并希望将这些数据放入数组中。

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

假设我有数据进入缓冲区,我怎样才能为每个块添加300个字符?我是C的新手所以请用简单的例子解释我。

谢谢, 凯文

3 个答案:

答案 0 :(得分:3)

声明无效,但我认为你的意思是:

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 :(得分:1)

您可以使用strncpy

strncpy( data, buffer, 299 ) ;

保留终止字符'\0'的最后一个索引。或者使数组大小为301,然后使用strncpy作为300个元素。

答案 2 :(得分:1)

C中,您可以使用memcpy()将内存从一个区域复制到另一个区域。 memcpy()的原型是:

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

,说明是它将n字节从src复制到dst,然后返回dst

因此,要将b中的300个字节复制到a,其中ab指向有用的内容,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);