【问题标题】:Difference between \n and CR\n 和 CR 之间的区别
【发布时间】:2016-05-04 08:50:21
【问题描述】:

根据 ASCII 表,换行符 (\n) 的值为 13 而回车符 (CR) 的值为 13 。尝试编写检测是否按下回车键的程序时。使用这两个值是否安全?

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

     puts("Enter Key Pressed ") ;

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

     puts("Enter Key Pressed ") ;

【问题讨论】:

  • C 不保证使用 ASCII。
  • 简答:使用\n
  • 换行符的值是10,而不是。所以你的问题没有多大意义。

标签: c newline carriage-return


【解决方案1】:

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

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

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

  1. 操作系统可能会映射事物。例如,在 Unix 和 Linux 下,在终端驱动程序的正常(“熟”)模式下,Return 键映射到(发送)换行符。
  2. 在 C 中,“换行符”的首选字符始终是 '\n'。即使底层操作系统有不同的约定,在正常情况下,您的程序也应该接收'\n' 换行。 (同样,当您打印 '\n' 时,它会被转换为回车、换行或回车/换行对,具体取决于您的操作系统的约定。)

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 通过外部引用,你的意思是ascii表吗?
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2019-01-28
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 2016-08-16
      • 2017-04-23
      相关资源
      最近更新 更多