'\r'和'\n'的区别事例

来源:百度知道 编辑:UC知道 时间:2024/06/09 08:48:11
我知道了一个是回车,一个是换行的意思,但是根据这段代码
始终想不通:
#include<stdio.h>
#include<conio.h>
void main()
{
int k;
char usern[15];
for(k=0;k < 15;k++)
{
usern[k]=getch();
putchar('*');
if(usern[k] == '\r')
{
usern[k]= '\0';
break;

}
}
}

不知道这个地方为何用'\r'而不用'\n'?
能详细解释下了么?
~~
还是没懂,我加点分吧~

#include<stdio.h>
void main()
{
char ans;
int inum,cnt;
ans='\n';
while(ans=='\n')
{
ans=' ';
printf("情输入一个数\n");
scanf("%d",&inum);
cnt = 0;
while(cnt<inum)
{
printf("\n%d : %c\n",cnt,cnt);
cnt++;
}
printf("\n您是否继续输入?\n");
fflush(stdin);
scanf("%c",&ans);
}

学到东西了,原因是在这两个函数上getch()和scanf()上.'\n'和'r'其实都是回车键产生的字符.只是scanf()或getchar()遇到回车键就会获得'\n'
而getch()遇到回车就得到'\r',为了检验我所说.写了程序检验:
main()
{
char a;
scanf("%c",&a);
printf("%d",a);
getch();
}
/*结果是10,也就是'\n'*/
main()
{
char a;
a=getch();
printf("%d",a);
getch();
}
/*结果是13,就是'\r'*/

造这个的原因是stdin流.因为getch()不从stdin流中读取数据,而是读取用户即时输入数据.

因为你在键盘上按的回车是'\n',而不是'\r'.
所以循环的条件就不成立了.

c语言编程时(windows系统)

\r 就是return 回到 本行 行首 这就会把这一行以前的输出 覆盖掉

如:
int main() {

cout << "hahaha" << "\r" << "xixi" ;

}
最后只显示 xixi 而 hahaha 背覆盖了

\n 是回车+换行 把光标 先移到 行首 然后换到下一行 也就是下一行的行首拉

int main() {

cout << "hahaha" << "