2016-05-04 102 views
-1

根據ASCII表格,新行字符(\ n)的值是13,而回車符(CR)的值是13。當試圖編寫一個檢測是否按下Enter鍵的程序時。它可以安全使用任一值? n和CR之間的區別

if((kr=getchar()) == 13) 

    puts("Enter Key Pressed ") ; 

if((kr=getchar()) == '\n') 

    puts("Enter Key Pressed ") ; 
+0

C不保證使用ASCII。 –

+0

簡短回答是:使用'\ n' – nikaltipar

+2

換行符的值是10。所以你的問題沒有多大意義。 – Lundin

回答

4

簡答:您應該始終使用'\n'

較長的回答:是的,回車是ASCII 13是C. '\r'換行符是ASCII 10(不是13),是C.

'\n'

但你按下鍵是一定相同作爲你將在C程序中收到的角色,原因有兩個:

  1. 操作系統可能映射事物。例如,在Unix和Linux下,在終端驅動程序的正常(「熟化」)模式下,返回鍵映射到(發送)換行。
  2. 在C中,「新行」的首字母總是'\n'。即使底層操作系統有不同的約定,在正常情況下,您的程序應該會收到'\n'換行。 (同樣,當您打印'\n',它被翻譯成回車換行或回車/換行對,這取決於你的操作系統的約定。)

最後,無論你做什麼,即使你需要明確處理Carriage Return,請在C程序中使用'\r''\n'。不要讓讀者知道什麼是數字10和13(或0x0a和0x0d)。

2

您可以使用一個,但你絕對應該使用\n因爲人們可以在沒有外部參考閱讀。

+0

通過外部參考,你的意思是ascii表? –

+0

@DogusUral:是的。 –

0

我覺得這兩個值都是一樣的,但是爲了製作更易讀的代碼,您應該使用「\ n」,或者在另一種情況下使用註釋來解釋您通過鍵盤所期望的內容。