MCP*_*MCP 23 c console newline getc
我正在写一个基本上等待用户点击"输入"然后做某事的功能.我发现在测试时有效的方法如下:
#include <stdio.h>
int main()
{
int x = getc(stdin);
if (x == '\n') {
printf("carriage return");
printf("\n");
}
else {
printf("missed it");
printf("\n");
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题,以及我最初尝试过的是:if (x == '\r')但是在测试中,该程序没有让我碰到输入.这'\n'似乎对应于我从控制台进入输入.有人可以解释这个区别吗?另外,要验证,写它if... == "\n"是否意味着字符串文字?即用户真的必须"\n"从控制台进入,对吗?
Why*_*rrh 42
\n是换行符,\r而是回车符.他们使用它们的不同之处.Windows用来\r\n表示按下了回车键,而Linux和Unix \n用来表示按下了回车键.
因此,我总是使用,\n因为它被所有人使用; 并且if (x == '\n')是测试角色平等的正确方法.
jos*_*mas 13
'\n'是"换行",'\ r'是回车符.不同的操作系统将以不同的方式处理新线路,例如
视窗
期望换行符是两个字符的组合,'\ r \n'.
Linux\Unix和Modern Mac OS
使用单个'\n'表示新行.
经典Mac OS
使用单个'\ r'表示新行.
基本上,我会使用,if (x == '\n')因为它目前被所有现代操作系统使用.