2013-04-03 59 views
0

它的时间结束,但无论如何,我想完成这个问题。我想读取二进制文件缓冲区,稍后我想将此缓冲区复制到数组。我正在那样做;从二进制文件读取并复制到阵列

int i=0; 
char *buffer; 

buffer=(char *)malloc(filelen+1); //filelen is length of binary file 

while() 
{ 
fread(buffer,100,1,filepointer); //filepointer is input binary file pointer,i wanna read 100 byte 
strcpy(tup[i],buffer); //tup[] is char array.i want copy buffer to in this array 
i++; 
} 

我得到错误在strcpy行你不能将指针复制到像这样的整数。

thanx。

+0

'buffer'不是正确的终止字符串,所以你不能使用'strcpy'。在检查fread的返回值(查看实际读取的元素数量)后,您可以尝试使用'memcpy'。 –

回答

2

我想你想写:

strcpy(&tup[i],buffer); 

但是也有一些其他的问题。

  1. 你怎么知道tup和buffer是空终止的。缓冲区不可能是null终止。因此,您应该memcpy而不是(具有已知的计算长度)
  2. 您确定无法覆盖tup的结尾吗?
  3. 由于您的临时缓冲区一次只读取100个字节,因此您不需要分配完整的内存大小。
+0

+1或者使用'tup + i'(我更喜欢,但我是一个指针算术的人)。 – WhozCraig

+0

我刚刚使用了与OPs问题最相似的形式。 – doron

1

它必须是:

strcpy(tup,buffer); 

如果TUP是char* tup

也可以在使用malloc()buffer分配内存后使用buffer[filelen]=0;,这将处理'\0'终止。

+0

对于memset()有* no *原因,并且只有零才会立即覆盖除文件内容以外的所有索引。一个简单的'buffer [filelen] = 0;'就足够了。 – WhozCraig