如何将数据从缓冲区放入C中的数组?
问题描述:
我已经在缓冲区中获得了一些数据,并希望将这些数据放入数组中。如何将数据从缓冲区放入C中的数组?
typedef struct chunk
{
char data[300]; /* the bufferr. */
} CHUNK;
char *buffer, CHUNK c [100];
假设我有数据到缓冲区中,我怎样才能把每块300字符?我是C新手,请用简单的例子来解释我。
感谢, 凯文
答
在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);
答
的声明是无效的,但我认为你的意思是:
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;
}
,因此,所有的答案如下在某些情况下是可信的,在另一个情况下是有缺陷的。你正在处理文本数据(如果是这样,是ASCIIZ?,你希望每个块都是NUL终止?)还是二进制数据(在这种情况下,你需要知道缓冲区中数据的大小)。你想使用任何未使用的CHUNK数据元素/空间。 – 2011-04-13 04:20:21
是的,我的数据将只是文本文件。直到现在还没有想到未使用的CHUNK数据。我应该怎么做 ?对不起,我是C的新手。 – kevin 2011-04-13 05:50:57
C通常将字符串存储为0到255之间的一系列数字,其中0表示文本的结尾,其他数字表示根据ASCII码表示的字母(例如,32是空格,65大写'A')。你需要弄清楚,如果你以后要做的任何事情需要每个完整的300个字符的块有自己的0 C字符串终结符;对于任何最终的部分填充块都是同样的。那么,你以后如何使用这些块呢? – 2011-04-13 06:50:10