2011-12-28 142 views
0

請告訴我哪裏出錯了。使用fread將文件的一部分讀取到緩衝區

我有一個文件,我需要將最後n個字節複製到一個數組。

char *buffer = (char *)malloc(sizeof(char)*n); 
    size_t result = fread(buffer,sizeof(char)*n,1,outptr); 

結果的值是0

的一切行動,直到在這裏我的代碼工作的權利(我已經檢查了所有的值用gdb)。一些行後我也釋放緩衝區。

n是用戶輸入的。輸出ptr用作

FILE *outptr = fopen(outfile,"w") 

//輸出文件名也是用戶輸入的並且被檢查以確保它是bmp文件。

+0

你能發佈一些更多的代碼? 'n'如何計算? 'outptr'如何設置? – hmjd 2011-12-28 17:42:26

回答

1

您正嘗試從您在寫入模式下打開的文件讀取數據。

變化:

FILE *outptr = fopen(outfile,"w"); 

到:

FILE *outptr = fopen(outfile,"r"); /* Use "rb", not "r", if 'outfile' is binary. */ 
+0

謝謝,我的壞我改變了它! – kevin 2011-12-28 17:57:34

1

size_t result = fread(buffer, n, 1, outptr);應該沒問題。

OTOH,您正在處理的文件是否爲空?

請確保fopen()成功,並檢查malloc()是否成功!

在完全不同的筆記上,sizeof()fread()返回size_t並且應該投射到int