\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 程序中收到的字符相同,原因有二:
- 操作系统可能会映射一些东西。例如,在 Unix 和 Linux 下,在终端驱动程序的正常 ("cooked") 模式下,Return 键映射到(发送)换行符。
- 在 C 中,"the new line" 的首选字符始终是
'\n'
。即使底层操作系统有不同的约定,在正常情况下你的程序应该接收一个 '\n'
换行。 (类似地,当您打印 '\n'
时,它会被转换为回车 return、换行符或回车 return / 换行对,具体取决于 OS 的约定。 )
最后,无论您做什么,即使您确实需要显式处理回车 Return,请在 C 程序中使用 '\r'
和 '\n'
。不要让您的读者知道神奇数字 10 和 13(或 0x0a 和 0x0d)是什么。
根据 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 程序中收到的字符相同,原因有二:
- 操作系统可能会映射一些东西。例如,在 Unix 和 Linux 下,在终端驱动程序的正常 ("cooked") 模式下,Return 键映射到(发送)换行符。
- 在 C 中,"the new line" 的首选字符始终是
'\n'
。即使底层操作系统有不同的约定,在正常情况下你的程序应该接收一个'\n'
换行。 (类似地,当您打印'\n'
时,它会被转换为回车 return、换行符或回车 return / 换行对,具体取决于 OS 的约定。 )
最后,无论您做什么,即使您确实需要显式处理回车 Return,请在 C 程序中使用 '\r'
和 '\n'
。不要让您的读者知道神奇数字 10 和 13(或 0x0a 和 0x0d)是什么。