[問題] 歸位字元

看板C_and_CPP作者 (闇雪)時間13年前 (2011/01/09 22:41), 編輯推噓4(4015)
留言19則, 5人參與, 最新討論串1/1
剛剛朋友問一個程式裡面用到歸位字元'\r' 她的寫法如下: while((ch=getche())!='\r') { if(ch==' ') wdcount++; else chcount++; } 看到她的程式碼之後我才發現自己不甚瞭解這個跳脫序列的用法 翻書和查網路一時也都查不到 所以想問板上高手它所代表的意義及實際用法、通常會在哪裡用? 似乎是很基礎的問題,如果有板友提供資料連結會自D 先附上,感謝。 --    ˍˍ 花因喜潔難尋偶,         ▕無缺▏ 人為悲秋易斷魂。          ▕公子▏  ̄ ̄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.104.6

01/09 22:44, , 1F
在windows,當你按下 Enter 時,雖是換行,但實際上是
01/09 22:44, 1F

01/09 22:44, , 2F
送出 '\r' '\n' 二個 char,最簡單去測得的方式是
01/09 22:44, 2F

01/09 22:45, , 3F
去寫一個txt檔,用"rb" mode 去讀,fgetc 一個一個讀
01/09 22:45, 3F

01/09 22:45, , 4F
你會發現在 '\n' 之前一定會有一個 '\r',合用才是換行
01/09 22:45, 4F

01/09 22:50, , 5F
所以'\r'在'\n'的前面?那如果上面的程式碼改用'\n'來判別是
01/09 22:50, 5F

01/09 22:50, , 6F
否會出現錯誤?
01/09 22:50, 6F

01/09 22:52, , 7F
這片段程式碼我怎麼可能知道,自己去試就知道
01/09 22:52, 7F

01/09 22:55, , 8F
它的確無法執行了。謝謝您=D
01/09 22:55, 8F

01/10 00:24, , 9F
其實一樓不太對 getche() 吃到 Enter 的回傳值是 13 即'\r'
01/10 00:24, 9F

01/10 00:24, , 10F
而一說的則是文字檔的換行問題 這兩個的關係有點微妙...
01/10 00:24, 10F

01/10 00:25, , 11F
/樓\ 漏字 囧
01/10 00:25, 11F

01/10 00:26, , 12F
要說什麼時候用 '\r' 什麼時候用 '\n' 什麼的似乎有點繁...
01/10 00:26, 12F

01/10 00:31, , 13F
\n是換行,\r是將游標移到行首,通常都是兩個合用。不過在
01/10 00:31, 13F

01/10 00:33, , 14F
windows底下,在\n前面會很雞婆的幫你加\r
01/10 00:33, 14F

01/10 01:26, , 15F
呃, 我原本推文想指出的就是樓上說的這種情形
01/10 01:26, 15F

01/10 01:26, , 16F
其實就是文字檔的換行問題...
01/10 01:26, 16F

01/10 01:27, , 17F
這和 getche() 對 Enter 的回傳值似乎比較沒什麼關係這樣
01/10 01:27, 17F

01/10 09:11, , 18F
聽說在mac下只有\r沒\n
01/10 09:11, 18F

01/10 10:49, , 19F
感謝指正
01/10 10:49, 19F
文章代碼(AID): #1DASaUAD (C_and_CPP)