我正在使用的终端仿真器遇到问题,并且设法将问题缩小到Windows控制台中奇怪的游标行为。 在常规cmd中,当您将字符恰好写到该行的末尾时,光标会跳到下一行。 (见下图)
当我尝试在编写的程序中使用printf实现相同功能时,光标停留在同一字符上。 (见下图)
我已经通过打印黑" \b"
来达到“类似cmd”的效果,但是我正在尝试找到一种更好的方法(例如,下一行的第一个字符可能很有意义,而且我不想删除它。阅读该字符当然不会很优雅。
我正在寻找一种使这种情况自动发生的方法。控制台的某些配置? 这里有人知道怎么做吗?
一个代码示例(假设控制台的默认大小为80):
int main() {
printf("12345678901234567890123456789012345678901234567890123456789012345678901234567890");
fflush(stdout);
getc();
return 0;
}
如果运行此代码,则在打印后,光标将停留在该行末尾的字符0上。 我的问题是如何使光标出现在下一行的开头,而不更改硬编码的字符串。
答案 0 :(得分:1)
我找到了解决方案: https://docs.microsoft.com/en-us/windows/console/setconsolemode
VS默认情况下似乎已启用了标志DISABLE_NEWLINE_AUTO_RETURN。
答案 1 :(得分:0)
在Windows中,行尾表示为“ \ r \ n”,而不是(如在unix中)“ \ n”。 \ r是回车符,\ n是换行符。因此,为换行符发出“ \ r \ n”应该可以解决您的问题。