CLion - 回车符?\r

12
我正在使用CLion IDE,想要进行回车操作。我在C语言中使用以下语法进行打印操作:printf("\rHello World!");,该语句位于一个循环中。然而,循环仍然将每个Hello World单独打印到一行上。我的程序中没有\n。我尝试更改行分隔符选项为UnixMac OSWindows,但它们都无法改变功能。谷歌也没有提供有用的答案。
int main()
{
    int i = 0;
    while (i < 5000000)
    {
        printf("\rThis is line number %d!", i++);   
    }

    return 0;
}

我期望的输出只是在控制台窗口中显示一行文本。
谢谢。

无用的bug在这里:https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000221704-Clion-How-to-carriage-return-in-console-prints- - Anona112
1
只是为了好玩,你可能会有兴趣将你的输出写入一个文件或内存块,然后检查结果是否意外地由编译器引入了 \n ... 或者将 \r 转换成了 \r\n 的组合... - David W
1
完全有可能跨平台Clion正在“支持”使用CR作为换行符的老派苹果用户。 - grek40
3
在WSL中,\r会使光标回到行首而不换行(类似于在Word中按Home键),并覆盖旧的一行。 - SIGSTACKFAULT
2
请在CLion之外的地方执行您的程序,即从shell中执行。您得到了相同的输出吗? - fundagain
显示剩余11条评论
1个回答

7

您的问题是PuTTY控制台,默认情况下在CLion中使用。 您可以在注册表中关闭它:

Help | Find Action | Registry... =>
run.processes.with.pty [ ] <- uncheck

我建议您修改程序:

#include <iostream>

int main() {
    int i = 0;
    while (i < 500) {
        printf("\rThis is line number %d!", i++);
        fflush(stdout); // <- add this call
    }

    return 0;
}

跟踪器中的相关问题 https://youtrack.jetbrains.com/issue/CPP-6949 - uta
我很快会尝试这个。谢谢! - Hatefiend
问题重新出现了。仅在调试中! - Anona112
您需要为每次重新运行CLion设置注册表。在调试的情况下,您的程序从调试器获取控制台,这是另一回事。它高度依赖于调试器、操作系统和设置。 - uta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接