fopen wb 參數

來源:互聯網
上載者:User

第一個參數是要開啟檔案的名字(路徑),第二個參數是開啟檔案所用的模式.對於模式參數的”w”和”wb”,”r”和”rb”,我起初並不是很理解,按照課本上的說法,”w”是以文本的形式進行寫入,而”wb”是以二進位模式進行寫入.這樣的解釋令人感覺有點玄乎,不能準確理解.

      最近寫了個小程式,把資料以16進位的形式存到一個檔案中,當從檔案中讀取時,發現讀取的資料不對,進行調試時,發現讀取的資料與寫入檔案中的資料發生了錯位,進行調試發現寫入時並沒有錯誤,讀取時,怎麼就發生錯位了呢?調試了半天發現每遇到0x0A,在它前面就會多一個0x0D.

      那麼,是什麼原因造成的呢?幾經周折之後,終於發現是fopen的參數引起的.如果這麼寫:fp = fopen(str,"wb");可以得到正常資料,而fp = fopen(str,"w");就得不到正常資料,遇到0x0A時,就會在其前面多一個0x0D.

      原來,如果有參數b,是以二進位方式開啟,這種方式不會進行”斷行符號符”和”分行符號”的轉換.而如果沒有b,即單以style="FONT-FAMILY: Times New Roman; mso-bidi-font-size: 10.5pt">”w”為參數的話,系統就把分行符號0A轉換為0D0A,因為windows是以0D0A為分行符號的.

       至此,總算是弄明白了所謂二進位開啟和文本開啟的區別,真暈

 

文章出處:DIY部落(http://www.diybl.com/course/3_program/c++/cppjs/20081117/151406.html)

文章出處:DIY部落(http://www.diybl.com/course/3_program/c++/cppjs/20081117/151406_2.html)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.