1. unix2dos與dos2unix這兩個tool是用來幹什麼的?
這首先應該要說明一下背景知識:
unix類作業系統下,換行字元是\n;
而早期的dos作業系統,其換行字元是由\r\n組成。
所以如果將unix系統下的文字檔案copy到dos系統下
或者將dos系統下的文字檔案拷貝到unix下可能會存在問題。
所以就出現了unix2dos以及dos2unix這兩個tool。
2. 為什麼早期的作業系統換行需要用\r\n兩個字元來表示?
關於這個歷史就當是看故事吧。
在計算機出現之前,有一種叫做電傳印表機的裝置,每秒鐘列印10個字元,
但是當一行列印結束,需要換到下一行時,需要耗時0.2s做換行回車的動作
將印表機指向下一行起始位置。而如果在這過程中有新的字元傳過來,
則該新字元就會丟失。那為了解決這個問題,研究人員就想到了在回車換行的
過程中多列印\r\n這兩個不會影響到顯示的字元來解決可能存在的字元丟失問題。
而隨著計算機的發展,科學家發現用\n乙個字元即可達到這種換行回車的目的了。
3. linux系統下的文字檔案直接copy到windows下面顯示只會顯示出一正行長長的字串?
這個目前我也不確定,需要通過實驗以及更豐富的理論知識來確認。
如果有知道的朋友,也可以跟我講喔,謝謝。
4. 所以dos系統下文字檔案的size要比unix系統下文字檔案的size要小?
毫無疑問,在二者顯示內容完全相同的情況下dos系統文字檔案每一行都會多乙個\r字元。
5. unix2dos源**應該如何實現?
綜上所講,我們知道unix2dos其實很簡單的就是在每乙個\n字元前面不上\r字元。
假設unix2dos這個tool的用法是:
./unix2dos ./unix_file ./dos_file
那偽**過程基本如下:
#include
#include
int main(int argc, char *ar**)
else}}
6. dos2unix源**應該如何實現?
dos2unix的**實現很類似,區別在於如果連續的兩個字元分別為\r,\n,
則需要將\n之前的\r字元刪除掉。所以網上有朋友寫了類似的程式將檔案
中所有的\r字元刪除是不正確的,因為\r可能是使用者特定有用的字元。
部分**如下:
while(!feof(fp_dos))
else}
以上**並未做諸多引數有效性檢查,出錯處理等,僅供參考。
unix2dos和dos2unix處理換行問題
今天同事qq給發來乙個檔案內容如下 希望把檔案內容轉換為update table name set col name 第一列 where col name 第二列 這種sql格式,使用ue列模式秒秒鐘改完,但是突然想用awk拼一下,於是寫了如下語句 cat certificate id awk 萬萬...
dos2unix與靜態庫
今天mayuyu要講兩個問題 dos2unix的作用,靜態庫與靜態編譯 1 dos2unix的作用 dos格式檔案傳輸到unix系統時,會在每行的結尾多乙個 m,所以要進行格式轉化,dos2unix就是用來作格式 轉化的。在linux中,文字檔案用 n 表示回車換行,而windows用 r n 表示...
dos2unix整個目錄
因為經常在windos平台和linux平台之間協同開發,所以不可避免的就碰到了crlf的問題,dos2unix 和 unix2dos可以說是最常用的解決crlf問題的工具了。下面列出怎麼對整個目錄中的問題做dos2unix操作 find type f exec dos2unix 其中具體命令的解釋如...