線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:12322
推到 Plurk!
推到 Facebook!

CR( #13)與CRLF(#13#10)在使用上有何不同?

答題得分者是:Justmade
ry_lee
高階會員


發表:368
回覆:251
積分:123
註冊:2002-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-26 02:15:37 IP:61.59.xxx.xxx 未訂閱
如主題:
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-26 08:50:26 IP:218.16.xxx.xxx 未訂閱
那要看你甚麼用 以 Text File 來說 在 PC 上換行是使用 CRLF 的 (Carage Return 只將指標回到最頭並不會自動下一行,要配合 Line Feed 來進到下一行) 在 Unit / Linex / Mac 等換行是直接使用 CR 的 (大部份情況使用 LF 也會得到同樣效果) 所以若Text File 使用 CRLF 在 PC 正常但到 Unix / Mac 便成了雙換行,反之用 CR 在 Unix/Mac 正常到了 PC 沒有換行 在其他軟件的文件會因應軟件的設計使用不同的設定,不一定會似 OS 的做法,如 Flash 內無論 PC / Mac / Linex 版本都是使用 CR 或 LF 換行而 CRLF 會變成雙換行。
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-26 09:49:33 IP:211.23.xxx.xxx 未訂閱
如果我沒背錯的話~~ #10 = 歸位(回到第一個位置) #13 = 換行(換到下一行) 兩個加起來就是跳行(ENTER) -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-26 11:55:47 IP:61.218.xxx.xxx 未訂閱
這有一篇文章給您參考一下 ◇ 換行模式 http://bbs.ee.ntu.edu.tw/boards/Programming/7/11.html        在 DOS 下 '\n' 仍然只是一個字元, 而且值和 UNIX 沒有什麼兩樣.     事實上, 不論在任何作業系統, 99.99% 的 C compiler 都會把 '\r'     直接編成十進位的 13, '\n' 編成 10. (0.01% 的是有 bug 的)     從 C 的基本定義來說, 單引號括起來的字元完全同等於 integer,     那麼一個 integer 怎麼會等於兩個字元呢?        問題出在當初 C 是在 UNIX 上發展的, UNIX 本來就沒有文字檔或二進     位檔的分別, 所以當初挑了 '\n' 來當 line delimiter (或說換行碼).     只要一個 byte. 而 DOS 卻在作業系統中定義了文字檔用 CRLF 來分     隔兩行, 為了讓 C 的程式可以 porting, 不需讓程式師寫出類似          #ifdef DOS       printf("hello world\r\n");       #else       printf("hello world\n");       #endif        這樣的程式, 所以 PC 的 C standard I/O library (如 fopen, fprintf,     fgets, printf 等) 函數在 default mode (text mode) 會做 CRLF -> LF     轉換, 也就是在緩衝區內掃描是否有 CRLF ("\r\n") 這樣的pattern, 主動     將其換成 LF ("\n"), 因此, 你可以發現 UNIX 的程式碼可以直接和 DOS     相通. 反之, 在寫入時, 會將 LF 轉換成 CRLF, 這樣存在磁碟中的文字檔     其他如 pe2 等編輯程式也可以正確讀取.        至於若是開檔時用 binary mode, 則不會作上述的轉換, 你可以發現     printf("hello world\n"); 輸出的結果其他 editor 不能正常讀取,     反之 printf("hellow world\r\n"); 則正常.        至於 open 系列, 若用 O_TEXT 開檔, 也會轉換. 主要也是為了讓類似下列     的程式碼能正常運作.     char *p = "hello world\n"     write(1, p, strlen(p));        HAVE A NICE DAY FOR YOU
系統時間:2024-04-25 11:51:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!