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

看板C_and_CPP作者 (高髮箍)時間11年前 (2012/10/13 03:50), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串3/6 (看更多)
※ 引述《changyuheng (張昱珩)》之銘言: : ※ 引述《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"); 請愛用 snprintf snprintf( name, sizeof(name), "..\\Temp\\%s", strdate.c_str() ); 想用 std::string 也無不可 fopen( (std::string("..\\Temp\\")+strdate).c_str(), "wb" ); : 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。 : "1F ..." 中, : 1 是 ASCII table 中的 49,佔 8 bytes, : F 是 ASCII table 中的 70,佔 8 bytes... 標準沒有寫字元編碼是用 ASCII : 你想要的應該是把 0x1F08080A... 大小的值寫到 fw 中。 寫入 1F 08 08... 跟寫入 0x1F0808... 兩操作的結果不一定相等 : 先把 hextemp 轉成 char array, : 再使用 pointer 去指這個 array 並依序 dereference, : 每兩個非空白字元, : 就套一次 atoi(),(說明:(char*) "1F\0" 轉成 (int) 0x1F) : 再把結果寫至 fw。 據我所知 atoi 是無法解析 hex 字串的. 標準作法: #include <stdint.h> #include <inttypes.h> char const * input = "1F 08 08 0A 3A 5C 2E 6F 05"; while( *input ) { // 間隔任意數目空白 while( isspace(*input) ) ++input; uint8_t value; sscanf( input, "%" SCNx8, &value ); fwrite( &value, sizeof(value), 1, fw ); input += 2; } 注意標色地方需剛好為 8 bits 且沒有任何 padding 才能容納 讀入的數值, -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.221.215 ※ 編輯: loveme00835 來自: 140.121.221.215 (10/13 04:04)

10/13 04:09, , 1F
借碼想問,有沒有printf對於 inttype.h 資料型態格式說明?
10/13 04:09, 1F

10/13 04:09, , 2F
網路上找到的讓我感覺超難用 @@ 感謝 :)
10/13 04:09, 2F

10/13 04:33, , 3F
直接翻文件 http://goo.gl/Xiew5
10/13 04:33, 3F

10/13 14:43, , 4F
謝謝 :)
10/13 14:43, 4F

10/15 13:50, , 5F
謝謝板主指正
10/15 13:50, 5F
文章代碼(AID): #1GU7IHiv (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1GU7IHiv (C_and_CPP)