运行下列一段代码,执行完了之后为什么光标会跑到(0,0)位置(就是首行首列)去呢?(press any key to continue出现之前)那位高人帮忙解决下,附带问一下使用getch()应该注意什么,谢了
代码:
#include<stdio.h>
#include<conio.h>
#include<windows.h>
void main()
{
char in[20];
int i;
printf("输入:");
for(i=0;i<20;i++)
{
in[i]=getch();
if(in[i]=='\r')
{
in[i+1]='\0';
break;
}
printf("*");
}
printf("%s",in);
Sleep(2000);
}
下面这样改之后应该能符合你的要求吧。光标回到行首的原因之前的朋友已经说了,是'\r'的问题。
因为你的代码执行后,字符串in里倒数第二个字符是'\r',所以在算法上把它去掉就好了。至于'\r'的效果,我也说不好,可能就是让光标回到当前行的行首位置吧。
if(in[i]=='\r')
{
in[i]='\0';
break;
}
for(i=0;i<20;i++)
{
in[i]=getch();
if(in[i]=='\r')
{
in[i+1]='\0';
break;
}
printf("*");
}
这一堆。就是每次获取一个字符。当获取的是回车时结束。。
用getch的时候回车是'\r','\r'的意思是回车并将光标移动到下一行。
附个图吧。
敲入回车后就是这个效果的。
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息