programing

C에서 콘솔 화면을 지우려면 어떻게 해야 합니까?

sourcejob 2022. 12. 24. 17:42
반응형

C에서 콘솔 화면을 지우려면 어떻게 해야 합니까?

C에서 콘솔 창을 클리어하는 '적절한' 방법이 있습니까?system("cls")?

휴대성을 높이기 위해 다음과 같이 하십시오.

#ifdef _WIN32
#include <conio.h>
#else
#include <stdio.h>
#define clrscr() printf("\e[1;1H\e[2J")
#endif

그럼 전화만 해clrscr(). Windows 에서는, 다음과 같이 사용됩니다.conio.hclrscr()Linux 에서는 ANSI 이스케이프 코드를 사용합니다.

"적절하게" 하고 싶다면 중간상인을 제거할 수 있습니다.conio,printf(등) 및 하위 레벨의 시스템 툴(대규모 코드 스위칭에 적합)만으로 실행할 수 있습니다.

#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

void ClearScreen()
{
  HANDLE                     hStdOut;
  CONSOLE_SCREEN_BUFFER_INFO csbi;
  DWORD                      count;
  DWORD                      cellCount;
  COORD                      homeCoords = { 0, 0 };

  hStdOut = GetStdHandle( STD_OUTPUT_HANDLE );
  if (hStdOut == INVALID_HANDLE_VALUE) return;

  /* Get the number of cells in the current buffer */
  if (!GetConsoleScreenBufferInfo( hStdOut, &csbi )) return;
  cellCount = csbi.dwSize.X *csbi.dwSize.Y;

  /* Fill the entire buffer with spaces */
  if (!FillConsoleOutputCharacter(
    hStdOut,
    (TCHAR) ' ',
    cellCount,
    homeCoords,
    &count
    )) return;

  /* Fill the entire buffer with the current colors and attributes */
  if (!FillConsoleOutputAttribute(
    hStdOut,
    csbi.wAttributes,
    cellCount,
    homeCoords,
    &count
    )) return;

  /* Move the cursor home */
  SetConsoleCursorPosition( hStdOut, homeCoords );
}

#else // !_WIN32
#include <unistd.h>
#include <term.h>

void ClearScreen()
{
  if (!cur_term)
  {
     int result;
     setupterm( NULL, STDOUT_FILENO, &result );
     if (result <= 0) return;
  }

   putp( tigetstr( "clear" ) );
}
#endif
printf("\e[1;1H\e[2J");

이 기능은 ANSI 터미널에서 작동하며 POSIX를 요구합니다.ANSI 이스케이프 시퀀스도 지원하므로 Window의 콘솔에서도 사용할 수 있는 버전이 있을 것입니다.

#include <unistd.h>

void clearScreen()
{
  const char *CLEAR_SCREEN_ANSI = "\e[1;1H\e[2J";
  write(STDOUT_FILENO, CLEAR_SCREEN_ANSI, 12);
}

다른 몇 가지 대안이 있지만, 일부는 커서를 {1,1}(으)로 이동하지 않습니다.

Windows(cmd.exe), Linux(Bash 및 zsh) 및 OS X(zsh)에서 테스트된 회피책:

#include <stdlib.h>

void clrscr()
{
    system("@cls||clear");
}

clrscr()을 입력하면 됩니다.boid main의 함수입니다.

예를 들어 다음과 같습니다.

void main()
{
clrscr();
printf("Hello m fresher in programming c.");
getch();
}

clrscr();

화면 클리어하기 쉬운 기능.

매크로를 사용하면 Windows, Linux, Mac 또는 Unix 중 어느 쪽을 사용하고 있는지 확인하고 현재 플랫폼에 따라 각 함수를 호출할 수 있습니다.다음과 같은 사항:

void clear(){
    #if defined(__linux__) || defined(__unix__) || defined(__APPLE__)
        system("clear");
    #endif

    #if defined(_WIN32) || defined(_WIN64)
        system("cls");
    #endif
}

음, C는 스크린의 개념을 이해하지 못합니다.그래서 어떤 코드도 휴대할 수 없게 됩니다.원뿔 모양 좀 봐당신의 필요에 따라 h 또는 저주?

어떤 라이브러리를 사용하든 휴대성이 문제가 됩니다.

Windows:

system("cls");

Unix:

system("clear");

대신 모든 것이 스크롤될 때까지 새 줄 문자를 삽입할 수 있습니다. 여기를 보십시오.

이것으로 휴대성을 쉽게 실현할 수 있습니다.

Windows 에서는, 다음의 조작을 잘못하고 있습니다.

system("clear")

하지만 실제로는 Linux용입니다.

Windows 의 타입은,

system("cls")

없이.#include conio.h

#include <conio.h>

및 사용

clrscr()

이를 위한 C 휴대용 방법은 없습니다.욕설과 같은 다양한 커서 조작 라이브러리는 비교적 휴대성이 뛰어납니다.conio.h는 OS/2 DOS와 Windows 간에 이식할 수 있지만 *nix 버전에는 사용할 수 없습니다.

"콘솔"의 전체 개념은 표준 C의 범위를 벗어난 개념이다.

순수 Win32 API 솔루션을 찾고 있는 경우 Windows 콘솔 API에서는 이를 수행하기 위한 단일 호출이 없습니다.한 가지 방법은 Fill Console입니다.[Output] : 충분한 수의 문자.또는 Write Console출력 GetConsoleScreenBufferInfo를 사용하여 몇 글자로 충분한지 확인할 수 있습니다.

완전히 새로운 콘솔 화면 버퍼를 생성하여 현재 콘솔 화면 버퍼를 만들 수도 있습니다.

가 김에cls창문을 말하는 것처럼 들립니다.이 경우 이 KB 항목에는 이 기능을 하는 코드가 있습니다.방금 시도했는데, 다음 코드로 호출했더니 작동했어요.

cls( GetStdHandle( STD_OUTPUT_HANDLE ));

이거면 될 거야.화면을 클리어하고 싶을 때는 언제든지 cls()를 호출합니다.

(앞에서 제시한 방법을 사용하여)

#include <stdio.h>
void cls()
{
    int x;
    for ( x = 0; x < 10; x++ ) 
    {
        printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
    }
}

방법은 '다 쓰다'를 사용하는 예요.tput ★★★★★★★★★★★★★★★★★」terminfo단자 특성을 얻은 다음 치수에 따라 새 라인을 삽입하는 기능을 합니다.

언급URL : https://stackoverflow.com/questions/2347770/how-do-you-clear-the-console-screen-in-c

반응형