fopen,fread和1A

來源:互聯網
上載者:User
//=====================================================================================================
//TITLE:
//  fopen,fread和1A
//AUTHOR:
//  norains
//DATE:
//  Friday 25-July-2006
//=====================================================================================================
  如果fopen不採用二進位方式開啟,如:fopen(filename,"r"),只要檔案中有一位元組為1A,fread函數則停止讀取.如果採用fopen(filename,"rb")則不會出現此問題.
  可以採用下段代碼讀取任意的png圖片來驗證,如果fopen採用"r"方式,則fread只能讀取5個位元組,因為png格式的圖片第六位為1A!
  代碼如下(在EVC下用_wfopen代替fopen):
  int GetReadNum(LPCTSTR pcszFileName)
  {
  #define MAX_READ_NUM 10
  
   FILE *pfs;
   pfs =_wfopen(pcszFileName,TEXT("r") ); //pfs =_wfopen(pcszFileName,TEXT("rb") );
   if(pfs==NULL)
   {
    return 0;
   }
   int iType=IMG_NOSUPPORT;
   PBYTE pBuffer=NULL; 
   pBuffer=(PBYTE)malloc(sizeof(BYTE)*MAX_READ_NUM);
   int iReadNum=fread(pBuffer,sizeof(BYTE),MAX_READ_NUM,pfs);
   free(pbuffer);
   return iReadNum;
  }
  用此代碼讀取png圖片,傳回值將是5!如果fopen是"rb",則一切正常,為10! 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.