[問題] 問一個binary檔案fread fwrite的問題
現有一個原始檔案 A, 檔案約1M大 內容大概長這樣
9D 22 22 02 20 AD 02 00 EE 22 22 02 20 C7 02 1C
B2 22 22 02 21 83 02 20 78 22 22 02 21 97 02 1F
E1 22 32 02 21 AB 02 20 FA 22 22 02 21 BF 02 00
現在我要做的是要把原始檔案A 的頭尾取出來
中間都填入FF 頭尾大小不一定
有可能頭佔16K 尾也佔16K 給使用者自己輸入(start和length)
然後寫到一個新的檔案B裡
我現在寫到
while((fread(&tmp,sizeof(char),1,ptr))==1)
{
fwrite(&tmp,sizeof(char),1,ptr2);
這樣可以完整的複製整個檔案A到檔案B, 且內容是對的
但是我不知道怎麼只取一小部分= =
所以我把迴圈改掉試試, 改成
for(t=0; t<=50; t++)
{
fread(&tmp,sizeof(char),1,ptr);
fwrite(&tmp,sizeof(char),1,ptr2);
這樣可以只印出前50個值, 我printf tmp在螢幕上也是對的
可是寫到檔案B卻變錯的, 用UltraEdit打開卻出現錯誤訊息:
檔案可能不是Dos格式,要轉換成Dos格式嗎?
打開檔案裡面是亂碼 ,像是 t ? 4 '' pÜ雘Z艞tꔠ 這樣, 好像存成char
請問1.若是不用forloop去做,還有別的方法可以讓迴圈停下而且存到檔案B內容是對的嗎?
2.我這樣做方向對嗎?因為沒做過Binary檔案的處理,所以不知道是不是有更好的方法
--
|
( 〒_〒) 嗚嗚嗚~
(∩∩)________
╱
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.207.116
※ 編輯: lulovepig 來自: 61.224.207.116 (02/08 19:08)
→
02/08 19:16, , 1F
02/08 19:16, 1F
→
02/08 19:18, , 2F
02/08 19:18, 2F
→
02/08 19:19, , 3F
02/08 19:19, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章