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.h
의clrscr()
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
'programing' 카테고리의 다른 글
php 여러 공간을 하나의 공간으로 바꾸기 (0) | 2022.12.24 |
---|---|
Java Set의 순서 유지? (0) | 2022.12.24 |
ExecuteNonQuery에서 영향을 받는 행을 가져옵니다. (0) | 2022.12.24 |
삽입처...모든 MySQL 열에 대해 선택 (0) | 2022.12.24 |
반환값과 Promise.resolve의 차이점은 무엇입니까? (0) | 2022.12.24 |