全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1162
推到 Plurk!
推到 Facebook!

[請問]檔案格式

尚未結案
yungfan
一般會員


發表:25
回覆:13
積分:7
註冊:2003-12-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-24 22:29:13 IP:163.28.xxx.xxx 未訂閱
請問一下在什麼情況下會是以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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-26 09:26:55 IP:61.63.xxx.xxx 未訂閱
引言: 請問一下在什麼情況下會是以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
yungfan你好: 這看來是相當 >! 是的你講的大致>等同於">)表示檔案將由字元模成開啟! 兩者的不同: * class="code"> case 0xa: /* \n */ case 0xd: /* cr */ 0D 0A需分開出來,表示兩個數值 3. 這一行:

    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. 試想,這樣邏輯的判斷對嗎? 嗯,說了一堆! >! 發表人 -
系統時間:2024-05-18 18:50:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!