Re: [問題] fopen() & fwrite() 問題

看板C_and_CPP作者 (張昱珩)時間12年前 (2012/10/12 18:22), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/6 (看更多)
※ 引述《KSmart (經濟不景氣,好景不常在)》之銘言: : 1.fopen的問題 : 如果我新增的檔案名稱是一個變數(可能是日期或是身分證字號), : 因為會隨著每一天增加一個檔案,如果我用以下的方式寫則會出現Error.. : 請問fopen要如何使用在動態的檔案名稱上呢?? : string strdate="20121012"; : FILE* fw=fopen("..\\Temp\\"+strdate,"wb"); fopen 是 c 的 function,string 是 c++ 的 char name[MAX_PATH] = {0}; sprintf(name, "..\\Temp\\%s", "20121012"); FILE* fw = fopen(name, "wb"); : 2.fwrite的問題 : 目前有個字串,假設為 : string hextemp="1F 08 08 0A 3A 5C 2E 6F 05" : 如果我要以16進制存成.JPG檔,那麼我需要去處理字串中間的空格嗎?? : 還是只需要把字串直接用fwrite寫成檔案就可以了呢?? : 目前一直卡在這邊,腦袋一直轉不過來... : 我想到的是,先把以上字串存入字元陣列,再用strtok去除中間空格.. : 然後再把每一個16進位寫到另一個陣列中 : char temp[]={1F,08,08,0A,3A,5C,2E,6F,05} : fwrite(temp, sizeof(temp), 1, fw) : 然後再寫入檔案,不曉得是不是我搞錯方向了?其實不用那麼麻煩? "1F 08 08 ..." 是字串, 以 ANSI C 來說是 char array。 Character encoding 通常使用 ASCII table, 1 是 ASCII table 中的 49,佔 8 bits, F 是 ASCII table 中的 70,佔 8 bits, ... 你想要的應該是把 0x1F08080A... 大小的值寫到 fw 中。 先把 hextemp 轉成 char array, 再使用 pointer 去指這個 array 並依序 dereference, 每兩個非空白字元, 就套一次 character to integer ((char*) "1F\0" 轉成 (int) 0x1F) 再把結果寫至 fw。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.224.168.204 ※ 編輯: changyuheng 來自: 111.81.229.220 (10/15 10:26)
文章代碼(AID): #1GU5_edg (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1GU5_edg (C_and_CPP)