fopen時w與wb的區別


    今天做了個小程序,把一個二進制文件分割為多個1.44M的文件,但分割完成后,發現很多文件的大小都超過1.44M。在網上搜索了下,發現時fopen是的參數部隊。
    “w”表示為文本文件。用則會把文件中的“0A”變為“0D0A”,因為某些文件系統認為“0A”為文本文件的換行符,windows認為“0D0A”為文本文件的換行符,為了兼容其他文件系統(如從linux拷貝來的文件),windows上的fopen函數做了這樣的格式轉換。如果我記得沒錯的話,linux與vxworks上不會做這樣的轉換,所以可以說使用“w”,其屬性要看所在的平台。
    “wb參數”表示為二進制文件,則樣文件系統會按純粹的二進制格式進行操作,因此也就不存在格式轉換的問題了。
     綜上,如果使用的是二進制文件,一定要使用“wb”參數,這樣肯定錯不了。
    
參數“wt”:
    “w”其實默認就是“wt”,即write in text mode。下面是msdn中隊這幾個參數的解釋:

“If t or b is not given in mode, the default translation mode is defined by the global variable _fmode. ”

“The default setting of _fmode is _O_TEXT for text-mode translation. _O_BINARY is the setting for binary mode.

You can change the value of _fmodein either of two ways:

  • Link with BINMODE.OBJ. This changes the initial setting of _fmode to _O_BINARY, causing all files except stdin, stdout, and stderrto be opened in binary mode.
  • Change the value of _fmode directly by setting it in your program. ”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM