与CR之间的差异\n

与CR之间的差异\n,c,newline,carriage-return,C,Newline,Carriage Return,根据ASCII表,新行字符(\n)的值为13,而回车符(CR)的值为13。当试图编写一个检测是否按下回车键的程序时。ı使用任意一个值安全吗 if( ( kr=getchar() ) == 13 ) puts("Enter Key Pressed ") ; 或 您可以使用其中任何一个,但是您肯定应该使用\n,因为人们可以在没有外部引用的情况下阅读它。我认为这两个值是相同的,但是为了使代码更可读,您应该使用“\n”,或者在另一种情况下使用注释来解释您对键盘的期望。简短回答:您应该始终

根据ASCII表,新行字符(\n)的值为13,而回车符(CR)的值为13。当试图编写一个检测是否按下回车键的程序时。ı使用任意一个值安全吗

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

     puts("Enter Key Pressed ") ;


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

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

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

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

但您按下的键不一定与C程序中接收到的字符相同,原因有二:

  • 操作系统可以映射事物。例如,在Unix和Linux下,在终端驱动程序的正常(“煮熟”)模式下,返回键映射到(发送)换行符
  • 在C语言中,“新行”的首选字符总是
    '\n'
    。即使基础操作系统具有不同的约定,在正常情况下,程序也应该接收新行的
    '\n'
    。(类似地,当您打印
    '\n'
    时,它会转换为回车符、换行符或回车符/换行符对,具体取决于操作系统的约定。)

  • 最后,无论您做什么,即使您确实需要显式处理回车,也请在C程序中使用
    '\r'
    '\n'
    。不要让读者知道神奇数字10和13(或0x0a和0x0d)是什么。

    通过外部引用,您的意思是ascii表?C不保证使用ascii。简短的回答是:使用
    \n
    换行符的值是10,而不是10。所以你的问题没有多大意义。
     if( ( kr=getchar() ) == '\n' )
    
         puts("Enter Key Pressed ") ;