【问题标题】:CLion - Carriage return? \rCLion - 回车? \r
【发布时间】:2017-10-05 03:40:35
【问题描述】:

我正在使用 CLion IDE,我正在尝试回车。

我正在用 C 语言执行打印语句,语法如下:

printf("\rHello World!"); 在循环中。循环仍然在自己的行上打印每个Hello World。我的程序中没有\n。我尝试将line separators 选项更改为unix mac OSwindows,但它们都没有改变功能。谷歌也没有让我找到有用的答案。

int main()
{
    int i = 0;
    while (i < 5000000)
    {
        printf("\rThis is line number %d!", i++);   
    }

    return 0;
}

我的预期输出只是控制台窗口中的一行文本。

谢谢。

【问题讨论】:

  • keil.com/support/docs/1265.htm希望对您有所帮助
  • 只是为了笑,将输出写入文件或内存块然后检查结果以查看编译器是否意外引入了 \n 可能会很有趣......或者也许将 \r 翻译成 \r\n 组合...
  • 跨平台的clion完全有可能“支持”以CR为换行符的老派苹果用户。
  • 对我来说,在 WSL 上,\r 使光标转到行首而不转到新行(类似于在 Word 中按 Home)并覆盖旧行。跨度>
  • 请从 CLion 外部(即 shell)执行您的程序。你得到相同的输出吗?

标签: c special-characters clion carriage-return


【解决方案1】:

您的问题是 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;
}

【讨论】:

  • 跟踪器中的相关问题youtrack.jetbrains.com/issue/CPP-6949
  • 我很快就会试一试。谢谢!
  • 问题再次出现。仅在调试中!
  • 您需要为每次 CLion 重新运行设置注册表。在调试的情况下,您的程序从调试器获取控制台,这是不同的故事。这在很大程度上取决于调试器、操作系统和设置。
猜你喜欢
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多