永发信息网

c语言光标位置问题

答案:2  悬赏:10  手机版
解决时间 2021-05-05 16:52
  • 提问者网友:美人性情
  • 2021-05-05 01:10

运行下列一段代码,执行完了之后为什么光标会跑到(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);
}

最佳答案
  • 五星知识达人网友:杯酒困英雄
  • 2021-05-05 02:18

下面这样改之后应该能符合你的要求吧。光标回到行首的原因之前的朋友已经说了,是'\r'的问题。


因为你的代码执行后,字符串in里倒数第二个字符是'\r',所以在算法上把它去掉就好了。至于'\r'的效果,我也说不好,可能就是让光标回到当前行的行首位置吧。


if(in[i]=='\r')
{
in[i]='\0';
break;
}

全部回答
  • 1楼网友:不想翻身的咸鱼
  • 2021-05-05 03:01
for(i=0;i<20;i++) { in[i]=getch(); if(in[i]=='\r') { in[i+1]='\0'; break; } printf("*"); } 这一堆。就是每次获取一个字符。当获取的是回车时结束。。 用getch的时候回车是'\r','\r'的意思是回车并将光标移动到下一行。 附个图吧。 敲入回车后就是这个效果的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯