[請問]檔案格式 |
尚未結案
|
yungfan
一般會員 發表:25 回覆:13 積分:7 註冊:2003-12-29 發送簡訊給我 |
請問一下在什麼情況下會是以ASCII的格式去讀取檔案呢??
假如使用fopen時指定rb,不是應該就以binary的型態來讀檔??
還是這跟本是不同的東西,有點搞不懂,
麻煩各位幫我看一下這段程式是什麼意思…謝謝啦…^^
if ((fof = fopen(bs_filenam, "rb")) == NULL) { printf("Could not find \"%s\".\n", bs_filenam); exit(1); } do { n = fread(&val, sizeof(unsigned char), 1, fof); switch (val) { case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: case 0x41: case 0x42: case 0x43: case 0x44: case 0x45: case 0x46: case 0xa: /* \n */ case 0xd: /* cr */ case 0x1a: /* sub */ break; default: /* detection of an binary character */ flag--; break; } } while (flag & n); if (flag) bs->format = ASCII; else bs->format = BINARY; fclose(fof)發表人 - yungfan 於 2004/03/24 23:29:28 |
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 請問一下在什麼情況下會是以ASCII的格式去讀取檔案呢?? 假如使用fopen時指定rb,不是應該就以binary的型態來讀檔?? 還是這跟本是不同的東西,有點搞不懂, 麻煩各位幫我看一下這段程式是什麼意思…謝謝啦…^^yungfan你好: 這看來是相當 >! 是的你講的大致>等同於">)表示檔案將由字元模成開啟! 兩者的不同: * class="code"> case 0xa: /* \n */ case 0xd: /* cr */ 0D 0A需分開出來,表示兩個數值 3. 這一行:if ((fof = fopen(bs_filenam, "rb")) == NULL) { printf("Could not find \"%s\".\n", bs_filenam); exit(1); } do { n = fread(&val, sizeof(unsigned char), 1, fof); switch (val) { case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: case 0x41: case 0x42: case 0x43: case 0x44: case 0x45: case 0x46: case 0xa: /* \n */ case 0xd: /* cr */ case 0x1a: /* sub */ break; default: /* detection of an binary character */ flag--; break; } } while (flag & n); if (flag) bs->format = ASCII; else bs->format = BINARY; fclose(fof)發表人 - yungfan 於 2004/03/24 23:29:28 case 0x1a: /* sub */ break;偵側是否檔案結束(文字檔的0x1a是檔案結束之意,binary檔之0x1a只是一數值) 4. 其它表示偵查0~9 和 A~F(不是a~f) 5. 應該有一行是int flag=1;這樣的吧! 6. while loop在flag=0或是檔案讀完時跳出 7. 跳出後判斷是什麼模式的檔 8. 試想,這樣邏輯的判斷對嗎? 嗯,說了一堆! >! 發表人 - |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |