如何在c中隐藏控制台光标?

How to hide console cursor in c?

我有一个简单的 C 程序,它代表控制台中的加载屏幕,但我无法隐藏光标。我尝试提高睡眠功能的速度,以便重置光标计时器并且光标消失,但这不起作用。

有什么隐藏光标的小窍门吗?

代码:

#include <stdio.h>
#include <stdlib.h>

const int TIME = 1;

int main(int argc,char *argv[]){
    int i;
    while (1){
        printf("loading");
        for (i=0;i<3;i++){
            sleep(TIME);
            printf(".");
        }
        sleep(TIME);
        printf("\r");
        system("Cls");
        sleep(TIME);
    }
}

将以下函数添加到您的程序中

#include <windows.h>

void hidecursor()
{
   HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
   CONSOLE_CURSOR_INFO info;
   info.dwSize = 100;
   info.bVisible = FALSE;
   SetConsoleCursorInfo(consoleHandle, &info);
}

并在您的 main 中调用它。

并在 MSDN

中阅读更多内容
printf("\e[?25l");

这应该有效!它取自 ANSI 代码表,其中字符不仅仅是它们所看到的。它们的行为就像某种形式的命令。

扩展 Bishal 的回答:

隐藏光标: printf("\e[?25l");

要重新启用游标: printf("\e[?25h");

Source

这里有一个在 Windows 和 Linux 中都有效的解决方案:

#include <iostream>
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#define VC_EXTRALEAN
#include <Windows.h>
#endif // _WIN32
using namespace std;

void show_console_cursor(const bool show) {
#if defined(_WIN32)
    static const HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO cci;
    GetConsoleCursorInfo(handle, &cci);
    cci.bVisible = show; // show/hide cursor
    SetConsoleCursorInfo(handle, &cci);
#elif defined(__linux__)
    cout << (show ? "3[?25h" : "3[?25l"); // show/hide cursor
#endif // Windows/Linux
}