我已經在緩衝區中獲得了一些數據,並希望將這些數據放入數組中。如何將數據從緩衝區放入C中的數組?
typedef struct chunk
{
char data[300]; /* the bufferr. */
} CHUNK;
char *buffer, CHUNK c [100];
假設我有數據到緩衝區中,我怎樣才能把每塊300字符?我是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