Re: [問題] fopen() & fwrite() 問題
※ 引述《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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 6 篇):