程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 原件-linux系統中,對一個二進制文件進行復制,為什麼副本和原文件不一樣大呢???

原件-linux系統中,對一個二進制文件進行復制,為什麼副本和原文件不一樣大呢???

編輯:編程綜合問答
linux系統中,對一個二進制文件進行復制,為什麼副本和原文件不一樣大呢???

事情是這樣的,我在linux 下用C語言編寫了一個小程序,對二進制文件進行復制。方法是fopen()一個二進制文件,然後用fread()讀取一部分數據寫到另一個新建的二進制文件中,直到復制完成。結束後我對兩個文件進行對比,發現副本比原件小100多個字節,查看各個段的大小也沒發現什麼不同,但是最後的總大小就是不一樣。而且對副本chmod()之後,同樣能夠運行。
著是怎麼回事呢??

最佳回答:


不論讀寫文件,在fopen時需要用二進制形式打開,參數不要只用"r",用"rb"

如果你的原文件是在Windows下編輯的(如用記事本),那麼它的換行實際上是兩個字符'\r'+'\n'
但在Linux下,文件的換行則是'\n'

如果你不用二進制處理,則會自動轉換這個換行符號,估計你的源文件有100多行,所以copy後少了100多個字節。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved