\ n和CR之间的区别

时间:2016-05-04 08:50:21

标签: c newline carriage-return

根据ASCII表,新行字符(\ n)的值为13,而回车符(CR)的值为13。当试图编写一个程序,检测是否按下了输入键。使用这两个值是否安全?

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

     puts("Enter Key Pressed ") ;

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

     puts("Enter Key Pressed ") ;

3 个答案:

答案 0 :(得分:4)

简短回答:您应该始终使用'\n'

更长的回答:是的,回车符是ASCII 13,在C.中是'\r'。 换行符是ASCII 10(不是13),在C中是'\n'

但是您按下的键必然与您在C程序中收到的字符相同,原因有两个:

  1. 操作系统可能会映射事物。例如,在Unix和Linux下,在终端驱动程序的正常(" cooked")模式下,Return键映射到(发送)换行符。
  2. 在C中,"新行"的首选字符。总是'\n'。即使底层操作系统有不同的约定,在正常情况下,您的程序应该为新行接收'\n'。 (类似地,当您打印'\n'时,它会转换为回车符,换行符或回车符/换行符对,具体取决于您的操作系统惯例。)
  3. 最后,无论你做什么,即使你确实需要明确处理回车,请在C程序中使用'\r''\n'。不要让读者知道幻数10和13(或0x0a和0x0d)是什么。

答案 1 :(得分:2)

您可以使用其中任何一个,但您绝对应该使用\n,因为人们可以在没有外部参考的情况下阅读它。

答案 2 :(得分:0)

我认为两个值都是相同的,但是为了使代码更易读,您应该使用" \ n",或者在另一种情况下使用注释来解释您对键盘的期望。