\n 和 CR 之间的区别

Difference between \n and CR

根据 ASCII table,换行符 (\n) 的值是 13 而 Carriage Return (CR) 的值是 13 。当试图编写一个程序来检测是否按下了回车键时。使用任一值是否安全?

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

     puts("Enter Key Pressed ") ;

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

     puts("Enter Key Pressed ") ;

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

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

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

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

中是 '\n'

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

  1. 操作系统可能会映射一些东西。例如,在 Unix 和 Linux 下,在终端驱动程序的正常 ("cooked") 模式下,Return 键映射到(发送)换行符。
  2. 在 C 中,"the new line" 的首选字符始终是 '\n'。即使底层操作系统有不同的约定,在正常情况下你的程序应该接收一个 '\n' 换行。 (类似地,当您打印 '\n' 时,它会被转换为回车 return、换行符或回车 return / 换行对,具体取决于 OS 的约定。 )

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