如何使Windows控制台光标跳至该行末尾的下一行

时间:2019-05-08 15:08:57

标签: c windows console

我正在使用的终端仿真器遇到问题,并且设法将问题缩小到Windows控制台中奇怪的游标行为。 在常规cmd中,当您将字符恰好写到该行的末尾时,光标会跳到下一行。 (见下图) cmd cursor behavior

当我尝试在编写的程序中使用printf实现相同功能时,光标停留在同一字符上。 (见下图) cmd cursor behavior

我已经通过打印黑" \b"来达到“类似cmd”的效果,但是我正在尝试找到一种更好的方法(例如,下一行的第一个字符可能很有意义,而且我不想删除它。阅读该字符当然不会很优雅。

我正在寻找一种使这种情况自动发生的方法。控制台的某些配置? 这里有人知道怎么做吗?

一个代码示例(假设控制台的默认大小为80):

int main() {
    printf("12345678901234567890123456789012345678901234567890123456789012345678901234567890");
    fflush(stdout);
    getc();
    return 0;
} 

如果运行此代码,则在打印后,光标将停留在该行末尾的字符0上。 我的问题是如何使光标出现在下一行的开头,而不更改硬编码的字符串。

2 个答案:

答案 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”应该可以解决您的问题。

https://en.wikipedia.org/wiki/Newline