2013-04-03 75 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