개발개발/c++

c++의 memset(), SetConsoleCursorPosition(), _kbhit(), _getch()

유잉유잉유잉 2024. 12. 19. 11:39
728x90

▶️memset()

  • 메모리 초기화할때 자주 사용하는 함수입니다
  • 인자 설명
    • 1번 인자에 들어가는 메모리 주소로부터
    • 3번 인자에 들어가는 메모리 크기만큼
    • 2번 인자에 들어가는 값으로 채워줍니다.
  •  이때 값은 바이트 단위로 채워주게 됩니다.
int main()
{
	const int size = 2;
    int arr[size] = {};
    memset ( arr, 0, sizeof ( int ) * size );

    for (int i = 0 ; i < size ; i++)
        std::cout << arr[i] << std::endl; // 0 출력
    
    memset ( arr, 1, sizeof ( int ) * size );
     for (int i = 0 ; i < size ; i++)
        std::cout << arr[i] << std::endl; // 16843009 출력
        
    memset ( arr, 2, sizeof ( int ) * size );
     for (int i = 0 ; i < size ; i++)
        std::cout << arr[i] << std::endl; // 33686018 출력
}

위 예시에서

int는 32비트니까 ( 4바이트(int 크기)* 8 비트(1byte는 8비트) )

1로 바꾼다면 

0000 0001 0000 0001 0000 0001 0000 0001 (16,843,009)

2로 바꾼다면 

0000 0010 0000 0010 0000 0010 0000 0010 (33,686,018)

 

 

▶️ SetConsoleCursorPosition()

  • 콘솔창에서 좌표를 지정하여 해당 좌표에 출력을 할 수 있게 만들어주는 함수입니다.
  • 콘솔창에는 출력 커서가 있습니다. 이 출력 커서의 위치를 지정할 수 있는 함수입니다.
int main()
{
	COORD	Pos;
    Pos.X = 5;
    Pos.Y = 3;

    SetConsoleCursorPosition( GetStdHandle(STD_OUTPUT_HANDLE), Pos );

    std::cout << "ㅁ" << std::endl;

    return 0;
}

  • COORD : X, Y값을 저장하는 구조체입니다.

 

 

▶️ _kbhit()

  • 키가 눌려졌는지 확인에 사용하는 함수입니다.
int main()
{
	if (_kbhit() > 0 )
    	std::cout>> "입력완료" >> std::endl;
}

 

 

▶️_getch ()

  • 문자나 아스키코드를 입력 받아오기 위한 함수로 어떤 키가 눌려졌는지 확인하는 함수입니다.
  • 방향키의 경우 224( ex: 펑션키 등등) 가 출력됩니다.
  • 한번 더 호출할 경우 방향키의 방향에 따라 다른 키값이 나오게 됩니다
int main()
{
    int key = _getch();
    
    std::cout << key << std::endl;

    key = _getch();

    std::cout << key << std::endl;

    return 0;
}

왼쪽 방향키를 눌렀을 경우

  • 방향키 위 : 72, 왼쪽 : 75, 아래 : 80, 오른쪽 77
728x90