我在缓冲区中有一些数据,并希望将这些数据放入数组中。
typedef struct chunk
{
char data[300]; /* the bufferr. */
} CHUNK;
char *buffer, CHUNK c [100];
假设我有数据进入缓冲区,我怎样才能为每个块添加300个字符?我是C的新手所以请用简单的例子解释我。
谢谢, 凯文
答案 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)
答案 2 :(得分:1)
在C
中,您可以使用memcpy()
将内存从一个区域复制到另一个区域。 memcpy()
的原型是:
void *memcpy(void *dst, const void *src, size_t n);
,说明是它将n
字节从src
复制到dst
,然后返回dst
。
因此,要将b
中的300个字节复制到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);