λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

ν‚€λ³΄λ“œ μž…λ ₯ λ°›κΈ° (getch, kbhit) ν•¨μˆ˜ μ‚¬μš©λ²• & 예제

by 5566 2023. 11. 23.

ν‚€λ³΄λ“œ μž…λ ₯ λ°›κΈ° (getch, kbhit) ν•¨μˆ˜ μ‚¬μš©λ²• & 예제

κ°œμš”

ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 방법 쀑 getch와 kbhit ν•¨μˆ˜μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ³ , μ‹€μ œλ‘œ μ‚¬μš©ν•˜λŠ” 방법과 예제λ₯Ό μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

getch ν•¨μˆ˜

1. μ •μ˜μ™€ μ‚¬μš©λ²•

getch ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯된 문자λ₯Ό μ¦‰μ‹œ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•  λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λ©ˆμΆ”κ³  λŒ€κΈ°ν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ₯Ό λˆ„λ₯΄λ©΄ ν•΄λ‹Ή λ¬Έμžκ°€ μ¦‰μ‹œ λ¦¬ν„΄λ˜μ–΄ λ‹€μŒ λ™μž‘μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.

2. 예제 μ½”λ“œ

λ‹€μŒμ€ getch ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° 문자λ₯Ό μž…λ ₯ λ°›μ•„ 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("문자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");
    ch = getch();

    printf("μž…λ ₯된 문자: %c\n", ch);

    return 0;
}

kbhit ν•¨μˆ˜

1. μ •μ˜μ™€ μ‚¬μš©λ²•

kbhit ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯이 λ°œμƒν•œ 경우 1을 λ¦¬ν„΄ν•˜κ³ , μž…λ ₯이 μ—†λŠ” 경우 0을 λ¦¬ν„΄ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 ν”„λ‘œκ·Έλž¨μ€ ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό 주기적으둜 ν™•μΈν•˜κ³ , μž…λ ₯이 μžˆλŠ” κ²½μš°μ—λ§Œ ν•΄λ‹Ή μž…λ ₯을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. 예제 μ½”λ“œ

λ‹€μŒμ€ kbhit ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° νŠΉμ • ν‚€λ₯Ό μž…λ ₯ λ°›μ•˜μ„ λ•Œ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("νŠΉμ • ν‚€λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");

    while (1) {
        if (kbhit()) {
            ch = getch();
            printf("\nμž…λ ₯된 ν‚€: %c\n", ch);
            break;
        }
    }

    return 0;
}

getch와 kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜κΈ°

getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄, ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•œ κ²½μš°μ—λ§Œ μž…λ ₯된 문자λ₯Ό κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‚¬μš©μžκ°€ μ‹€μ œλ‘œ ν‚€λ₯Ό λˆ„λ₯Ό λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λŒ€κΈ°ν•˜λŠ” 효과λ₯Ό 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

ν™œμš© 예제

getch와 kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“€μ–΄λ³΄λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€. κ²Œμž„μ€ μž„μ˜μ˜ ν‚€λ₯Ό μž…λ ₯받은 ν›„ "성곡"μ΄λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("κ²Œμž„μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.\n");
    printf("아무 ν‚€λ‚˜ λˆ„λ₯΄μ„Έμš”...\n");

    while (1) {
        if (kbhit()) {
            ch = getch();
            printf("μž…λ ₯된 ν‚€: %c\n", ch);

            printf("성곡!\n");
            break;
        }
    }

    return 0;
}

ν‚€λ³΄λ“œ μž…λ ₯ 받기에 λŒ€ν•œ μ‚¬μš©λ²•κ³Ό 예제 μ½”λ“œλ₯Ό μ†Œκ°œν–ˆμŠ΅λ‹ˆλ‹€. getch와 kbhit ν•¨μˆ˜λ₯Ό 적절히 ν™œμš©ν•˜μ—¬ μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 효과적으둜 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν‚€λ³΄λ“œ μž…λ ₯ λ°›κΈ° (getch, kbhit) ν•¨μˆ˜ μ‚¬μš©λ²• & 예제

κ°œμš”

ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 방법 쀑 getch와 kbhit ν•¨μˆ˜μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ³ , μ‹€μ œλ‘œ μ‚¬μš©ν•˜λŠ” 방법과 예제λ₯Ό μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

getch ν•¨μˆ˜

1. μ •μ˜μ™€ μ‚¬μš©λ²•

getch ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯된 문자λ₯Ό μ¦‰μ‹œ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•  λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λ©ˆμΆ”κ³  λŒ€κΈ°ν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ₯Ό λˆ„λ₯΄λ©΄ ν•΄λ‹Ή λ¬Έμžκ°€ μ¦‰μ‹œ λ¦¬ν„΄λ˜μ–΄ λ‹€μŒ λ™μž‘μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.

2. 예제 μ½”λ“œ

λ‹€μŒμ€ getch ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° 문자λ₯Ό μž…λ ₯ λ°›μ•„ 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("문자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");
    ch = getch();

    printf("μž…λ ₯된 문자: %c\n", ch);

    return 0;
}

kbhit ν•¨μˆ˜

1. μ •μ˜μ™€ μ‚¬μš©λ²•

kbhit ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯이 λ°œμƒν•œ 경우 1을 λ¦¬ν„΄ν•˜κ³ , μž…λ ₯이 μ—†λŠ” 경우 0을 λ¦¬ν„΄ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 ν”„λ‘œκ·Έλž¨μ€ ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό 주기적으둜 ν™•μΈν•˜κ³ , μž…λ ₯이 μžˆλŠ” κ²½μš°μ—λ§Œ ν•΄λ‹Ή μž…λ ₯을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. 예제 μ½”λ“œ

λ‹€μŒμ€ kbhit ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° νŠΉμ • ν‚€λ₯Ό μž…λ ₯ λ°›μ•˜μ„ λ•Œ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("νŠΉμ • ν‚€λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");

    while (1) {
        if (kbhit()) {
            ch = getch();
            printf("\nμž…λ ₯된 ν‚€: %c\n", ch);
            break;
        }
    }

    return 0;
}

getch와 kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜κΈ°

getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄, ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•œ κ²½μš°μ—λ§Œ μž…λ ₯된 문자λ₯Ό κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‚¬μš©μžκ°€ μ‹€μ œλ‘œ ν‚€λ₯Ό λˆ„λ₯Ό λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λŒ€κΈ°ν•˜λŠ” 효과λ₯Ό 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

ν™œμš© 예제

getch와 kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“€μ–΄λ³΄λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€. κ²Œμž„μ€ μž„μ˜μ˜ ν‚€λ₯Ό μž…λ ₯받은 ν›„ "성곡"μ΄λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("κ²Œμž„μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.\n");
    printf("아무 ν‚€λ‚˜ λˆ„λ₯΄μ„Έμš”...\n");

    while (1) {
        if (kbhit()) {
            ch = getch();
            printf("μž…λ ₯된 ν‚€: %c\n", ch);

            printf("성곡!\n");
            break;
        }
    }

    return 0;
}

ν‚€λ³΄λ“œ μž…λ ₯ 받기에 λŒ€ν•œ μ‚¬μš©λ²•κ³Ό 예제 μ½”λ“œλ₯Ό μ†Œκ°œν–ˆμŠ΅λ‹ˆλ‹€. getch와 kbhit ν•¨μˆ˜λ₯Ό 적절히 ν™œμš©ν•˜μ—¬ μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 효과적으둜 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1. κ°œμš”

ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 방법 쀑 getch와 kbhit ν•¨μˆ˜μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ³ , μ‹€μ œλ‘œ μ‚¬μš©ν•˜λŠ” 방법과 예제λ₯Ό μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

getch ν•¨μˆ˜

1. μ •μ˜μ™€ μ‚¬μš©λ²•

getch ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯된 문자λ₯Ό μ¦‰μ‹œ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•  λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λ©ˆμΆ”κ³  λŒ€κΈ°ν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ₯Ό λˆ„λ₯΄λ©΄ ν•΄λ‹Ή λ¬Έμžκ°€ μ¦‰μ‹œ λ¦¬ν„΄λ˜μ–΄ λ‹€μŒ λ™μž‘μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.

2. 예제 μ½”λ“œ

λ‹€μŒμ€ getch ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° 문자λ₯Ό μž…λ ₯ λ°›μ•„ 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("문자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");
    ch = getch();

    printf("μž…λ ₯된 문자: %c\n", ch);

    return 0;
}

kbhit ν•¨μˆ˜

1. μ •μ˜μ™€ μ‚¬μš©λ²•

kbhit ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯이 λ°œμƒν•œ 경우 1을 λ¦¬ν„΄ν•˜κ³ , μž…λ ₯이 μ—†λŠ” 경우 0을 λ¦¬ν„΄ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 ν”„λ‘œκ·Έλž¨μ€ ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό 주기적으둜 ν™•μΈν•˜κ³ , μž…λ ₯이 μžˆλŠ” κ²½μš°μ—λ§Œ ν•΄λ‹Ή μž…λ ₯을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. 예제 μ½”λ“œ

λ‹€μŒμ€ kbhit ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° νŠΉμ • ν‚€λ₯Ό μž…λ ₯ λ°›μ•˜μ„ λ•Œ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("νŠΉμ • ν‚€λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");

    while (1) {
        if (kbhit()) {
            ch = getch();
            printf("\nμž…λ ₯된 ν‚€: %c\n", ch);
            break;
        }
    }

    return 0;
}

getch와 kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜κΈ°

getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄, ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•œ κ²½μš°μ—λ§Œ μž…λ ₯된 문자λ₯Ό κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‚¬μš©μžκ°€ μ‹€μ œλ‘œ ν‚€λ₯Ό λˆ„λ₯Ό λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λŒ€κΈ°ν•˜λŠ” 효과λ₯Ό 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

ν™œμš© 예제

getch와 kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“€μ–΄λ³΄λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€. κ²Œμž„μ€ μž„μ˜μ˜ ν‚€λ₯Ό μž…λ ₯받은 ν›„ "성곡"μ΄λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("κ²Œμž„μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.\n");
    printf("아무 ν‚€λ‚˜ λˆ„λ₯΄μ„Έμš”...\n");

    while (1) {
        if (kbhit()) {
            ch = getch();
            printf("μž…λ ₯된 ν‚€: %c\n", ch);

            printf("성곡!\n");
            break;
        }
    }

    return 0;
}

ν‚€λ³΄λ“œ μž…λ ₯ 받기에 λŒ€ν•œ μ‚¬μš©λ²•κ³Ό 예제 μ½”λ“œλ₯Ό μ†Œκ°œν–ˆμŠ΅λ‹ˆλ‹€. getch와 kbhit ν•¨μˆ˜λ₯Ό 적절히 ν™œμš©ν•˜μ—¬ μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 효과적으둜 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

- ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 방법 쀑 getch와 kbhit ν•¨μˆ˜μ— λŒ€ν•œ μ†Œκ°œ

getch ν•¨μˆ˜

μ •μ˜μ™€ μ‚¬μš©λ²•

getch ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯된 문자λ₯Ό μ¦‰μ‹œ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•  λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λ©ˆμΆ”κ³  λŒ€κΈ°ν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ₯Ό λˆ„λ₯΄λ©΄ ν•΄λ‹Ή λ¬Έμžκ°€ μ¦‰μ‹œ λ¦¬ν„΄λ˜μ–΄ λ‹€μŒ λ™μž‘μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.

예제 μ½”λ“œ

λ‹€μŒμ€ getch ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° 문자λ₯Ό μž…λ ₯ λ°›μ•„ 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("문자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");
    ch = getch();

    printf("μž…λ ₯된 문자: %c\n", ch);

    return 0;
}

kbhit ν•¨μˆ˜

μ •μ˜μ™€ μ‚¬μš©λ²•

kbhit ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯이 λ°œμƒν•œ 경우 1을 λ¦¬ν„΄ν•˜κ³ , μž…λ ₯이 μ—†λŠ” 경우 0을 λ¦¬ν„΄ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 ν”„λ‘œκ·Έλž¨μ€ ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό 주기적으둜 ν™•μΈν•˜κ³ , μž…λ ₯이 μžˆλŠ” κ²½μš°μ—λ§Œ ν•΄λ‹Ή μž…λ ₯을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예제 μ½”λ“œ

λ‹€μŒμ€ kbhit ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° νŠΉμ • ν‚€λ₯Ό μž…λ ₯ λ°›μ•˜μ„ λ•Œ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("νŠΉμ • ν‚€λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");

    while (1) {
        if (kbhit()) {
            ch = getch();
            printf("\nμž…λ ₯된 ν‚€: %c\n", ch);
            break;
        }
    }

    return 0;
}

getch와 kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜κΈ°

getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄, ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•œ κ²½μš°μ—λ§Œ μž…λ ₯된 문자λ₯Ό κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‚¬μš©μžκ°€ μ‹€μ œλ‘œ ν‚€λ₯Ό λˆ„λ₯Ό λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λŒ€κΈ°ν•˜λŠ” 효과λ₯Ό 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

ν™œμš© 예제

getch와 kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“€μ–΄λ³΄λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€. κ²Œμž„μ€ μž„μ˜μ˜ ν‚€λ₯Ό μž…λ ₯받은 ν›„ "성곡"μ΄λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("κ²Œμž„μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.\n");
    printf("아무 ν‚€λ‚˜ λˆ„λ₯΄μ„Έμš”...\n");

    while (1) {
        if (kbhit()) {
            ch = getch();
            printf("μž…λ ₯된 ν‚€: %c\n", ch);

            printf("성곡!\n");
            break;
        }
    }

    return 0;
}

ν‚€λ³΄λ“œ μž…λ ₯ 받기에 λŒ€ν•œ μ‚¬μš©λ²•κ³Ό 예제 μ½”λ“œλ₯Ό μ†Œκ°œν–ˆμŠ΅λ‹ˆλ‹€. getch와 kbhit ν•¨μˆ˜λ₯Ό 적절히 ν™œμš©ν•˜μ—¬ μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 효과적으둜 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 방법 쀑 getch와 kbhit ν•¨μˆ˜μ— λŒ€ν•œ μ†Œκ°œ

getch ν•¨μˆ˜

μ •μ˜μ™€ μ‚¬μš©λ²•

getch ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯된 문자λ₯Ό μ¦‰μ‹œ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•  λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λ©ˆμΆ”κ³  λŒ€κΈ°ν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ₯Ό λˆ„λ₯΄λ©΄ ν•΄λ‹Ή λ¬Έμžκ°€ μ¦‰μ‹œ λ¦¬ν„΄λ˜μ–΄ λ‹€μŒ λ™μž‘μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.

예제 μ½”λ“œ

λ‹€μŒμ€ getch ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° 문자λ₯Ό μž…λ ₯ λ°›μ•„ 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("문자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");
    ch = getch();

    printf("μž…λ ₯된 문자: %c\n", ch);

    return 0;
}

kbhit ν•¨μˆ˜

μ •μ˜μ™€ μ‚¬μš©λ²•

kbhit ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯이 λ°œμƒν•œ 경우 1을 λ¦¬ν„΄ν•˜κ³ , μž…λ ₯이 μ—†λŠ” 경우 0을 λ¦¬ν„΄ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 ν”„λ‘œκ·Έλž¨μ€ ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό 주기적으둜 ν™•μΈν•˜κ³ , μž…λ ₯이 μžˆλŠ” κ²½μš°μ—λ§Œ ν•΄λ‹Ή μž…λ ₯을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예제 μ½”λ“œ

λ‹€μŒμ€ kbhit ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° νŠΉμ • ν‚€λ₯Ό μž…λ ₯ λ°›μ•˜μ„ λ•Œ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("νŠΉμ • ν‚€λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");

    while (1) {
        if (kbhit()) {
            ch = getch();
            printf("\nμž…λ ₯된 ν‚€: %c\n", ch);
            break;
        }
    }

    return 0;
}

getch와 kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜κΈ°

getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄, ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•œ κ²½μš°μ—λ§Œ μž…λ ₯된 문자λ₯Ό κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‚¬μš©μžκ°€ μ‹€μ œλ‘œ ν‚€λ₯Ό λˆ„λ₯Ό λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λŒ€κΈ°ν•˜λŠ” 효과λ₯Ό 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

ν™œμš© 예제

getch와 kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“€μ–΄λ³΄λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€. κ²Œμž„μ€ μž„μ˜μ˜ ν‚€λ₯Ό μž…λ ₯받은 ν›„ "성곡"μ΄λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("κ²Œμž„μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.\n");
    printf("아무 ν‚€λ‚˜ λˆ„λ₯΄μ„Έμš”...\n");

    while (1) {
        if (kbhit()) {
            ch = getch();
            printf("μž…λ ₯된 ν‚€: %c\n", ch);

            printf("성곡!\n");
            break;
        }
    }

    return 0;
}

ν‚€λ³΄λ“œ μž…λ ₯ 받기에 λŒ€ν•œ μ‚¬μš©λ²•κ³Ό 예제 μ½”λ“œλ₯Ό μ†Œκ°œν–ˆμŠ΅λ‹ˆλ‹€. getch와 kbhit ν•¨μˆ˜λ₯Ό 적절히 ν™œμš©ν•˜μ—¬ μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 효과적으둜 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. getch ν•¨μˆ˜

getch ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯된 문자λ₯Ό μ¦‰μ‹œ κ°€μ Έμ˜€λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ₯Ό λˆ„λ₯Ό λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λŒ€κΈ°ν•˜λ©°, λˆ„λ₯Έ 킀에 ν•΄λ‹Ήν•˜λŠ” 문자λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

μ‚¬μš©λ²•

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("문자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");
    ch = getch();

    printf("μž…λ ₯된 문자: %c\n", ch);

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œμ—μ„œ getch ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•  λ•ŒκΉŒμ§€ λŒ€κΈ°ν•˜κ³ , μž…λ ₯된 문자λ₯Ό ch λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. μ €μž₯된 λ¬ΈμžλŠ” 이후 printf ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 좜λ ₯λ©λ‹ˆλ‹€.

μ£Όμ˜μ‚¬ν•­

  • getch ν•¨μˆ˜λŠ” μž…λ ₯된 문자λ₯Ό 화면에 ν‘œμ‹œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 즉, μ‚¬μš©μžκ°€ μž…λ ₯ν•œ ν‚€λ₯Ό 화면에 보여주지 μ•Šκ³  λ¬΄μ‹œν•©λ‹ˆλ‹€.
  • ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•  λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λ©ˆμΆ”κ³  λŒ€κΈ°ν•˜λ―€λ‘œ, μ‚¬μš©μžκ°€ ν‚€λ₯Ό μž…λ ₯ν•˜κΈ° μ „κΉŒμ§€ λ‹€λ₯Έ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
  • getch ν•¨μˆ˜λŠ” <conio.h> 헀더 νŒŒμΌμ— μ„ μ–Έλ˜μ–΄ μžˆμœΌλ―€λ‘œ ν•΄λ‹Ή 헀더 νŒŒμΌμ„ 포함해야 ν•©λ‹ˆλ‹€.

ν™œμš© 예제

getch ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° νŠΉμ • ν‚€λ₯Ό μž…λ ₯λ°›μ•„ ν•΄λ‹Ή ν‚€λ₯Ό 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("νŠΉμ • ν‚€λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");

    ch = getch();

    printf("μž…λ ₯된 ν‚€: %c\n", ch);

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œμ—μ„œ getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° ν‚€λ³΄λ“œ μž…λ ₯을 λ°›κ³ , μž…λ ₯된 ν‚€λ₯Ό ch λ³€μˆ˜μ— μ €μž₯ν•œ ν›„ 좜λ ₯ν•©λ‹ˆλ‹€. 화면에 ν‘œμ‹œλ˜λŠ” λ©”μ‹œμ§€μ—μ„œ μ‚¬μš©μžμ—κ²Œ μž…λ ₯을 μš”μ²­ν•œ ν›„, μž…λ ₯ν•œ 킀에 ν•΄λ‹Ήν•˜λŠ” λ¬Έμžκ°€ 좜λ ₯λ©λ‹ˆλ‹€.

getch ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯된 문자λ₯Ό κ°€μ Έμ˜€λŠ” κ°„νŽΈν•˜κ³  즉각적인 방법을 μ œκ³΅ν•©λ‹ˆλ‹€. μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 톡해 ν”„λ‘œκ·Έλž¨μ˜ λ™μž‘μ„ μ œμ–΄ν•˜λŠ” λ“± λ‹€μ–‘ν•œ μƒν™©μ—μ„œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

- getch ν•¨μˆ˜μ˜ μ •μ˜μ™€ μ‚¬μš©λ²•

getch ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯된 문자λ₯Ό μ¦‰μ‹œ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ₯Ό λˆ„λ₯Ό λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λ©ˆμΆ”κ³  μž…λ ₯을 λŒ€κΈ°ν•©λ‹ˆλ‹€. μž…λ ₯된 λ¬ΈμžλŠ” λ°˜ν™˜λ˜μ–΄ λ‹€μŒ λ™μž‘μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.

μ‚¬μš©λ²•

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("문자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");
    ch = getch();

    printf("μž…λ ₯된 문자: %c\n", ch);

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œμ—μ„œ getch ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•  λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λŒ€κΈ°ν•˜κ³ , μž…λ ₯된 문자λ₯Ό ch λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. 이후 printf ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ch λ³€μˆ˜μ— μ €μž₯된 문자λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

μ£Όμ˜μ‚¬ν•­

  • getch ν•¨μˆ˜λŠ” μž…λ ₯된 문자λ₯Ό 화면에 ν‘œμ‹œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‚¬μš©μžκ°€ λˆ„λ₯Έ ν‚€λ₯Ό 화면에 보여주지 μ•Šκ³  λ¬΄μ‹œν•©λ‹ˆλ‹€.
  • ν‚€λ³΄λ“œ μž…λ ₯이 λ°œμƒν•  λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨μ΄ λ©ˆμΆ”κ³  λŒ€κΈ°ν•˜λ―€λ‘œ, μ‚¬μš©μžκ°€ ν‚€λ₯Ό μž…λ ₯ν•˜κΈ° μ „κΉŒμ§€ λ‹€λ₯Έ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
  • <conio.h> 헀더 νŒŒμΌμ— μ„ μ–Έλ˜μ–΄ μžˆμœΌλ―€λ‘œ ν•΄λ‹Ή 헀더 νŒŒμΌμ„ 포함해야 ν•©λ‹ˆλ‹€.

ν™œμš© 예제

getch ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° νŠΉμ • ν‚€λ₯Ό μž…λ ₯받은 ν›„ ν•΄λ‹Ή ν‚€λ₯Ό 좜λ ₯ν•˜λŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("νŠΉμ • ν‚€λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");

    ch = getch();

    printf("μž…λ ₯된 ν‚€: %c\n", ch);

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œμ—μ„œ printf ν•¨μˆ˜λ₯Ό 톡해 μ‚¬μš©μžμ—κ²Œ νŠΉμ • ν‚€λ₯Ό μž…λ ₯ν•˜λ„λ‘ μš”μ²­ν•œ ν›„, getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μž…λ ₯된 ν‚€λ₯Ό ch λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. 이후 ch λ³€μˆ˜μ— μ €μž₯된 값을 printf ν•¨μˆ˜λ‘œ 좜λ ₯ν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 킀에 λŒ€ν•œ λ¬Έμžκ°€ 화면에 ν‘œμ‹œλ©λ‹ˆλ‹€.

getch ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‘œλΆ€ν„° μ¦‰μ‹œ μž…λ ₯을 λ°›μ•„μ•Ό ν•  λ•Œ μ‚¬μš©ν•˜λŠ” νŽΈλ¦¬ν•œ ν•¨μˆ˜μž…λ‹ˆλ‹€. μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 톡해 ν”„λ‘œκ·Έλž¨μ˜ λ™μž‘μ„ μ œμ–΄ν•˜κ±°λ‚˜ νŠΉμ • ν‚€ μž…λ ₯에 λŒ€ν•œ μ œμ–΄ ꡬ문을 μž‘μ„±ν•˜λŠ” λ“± λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

- getch ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 예제 μ½”λ“œ

μ•„λž˜μ˜ 예제 μ½”λ“œλŠ” getch ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 과정을 λ³΄μ—¬μ£ΌλŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("문자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");  // μ‚¬μš©μžμ—κ²Œ μž…λ ₯ μš”μ²­

    ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜ ch에 μ €μž₯

    printf("μž…λ ₯된 문자: %c\n", ch);  // μž…λ ₯된 문자 좜λ ₯

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ λ¨Όμ € "문자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: "λΌλŠ” λ©”μ‹œμ§€λ₯Ό 화면에 ν‘œμ‹œν•©λ‹ˆλ‹€. μ‚¬μš©μžμ—κ²Œ μž…λ ₯을 μš”μ²­ν•˜λŠ” λ©”μ‹œμ§€μž…λ‹ˆλ‹€. μ‚¬μš©μžκ°€ μ–΄λ–€ 문자λ₯Ό μž…λ ₯ν•˜κΈ° μœ„ν•΄ ν‚€λ³΄λ“œλ₯Ό λˆ„λ₯΄λ©΄, getch ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ–΄ μž…λ ₯된 문자λ₯Ό μ¦‰μ‹œ λ°˜ν™˜ν•©λ‹ˆλ‹€. 그리고 λ°˜ν™˜λœ 문자λ₯Ό ch λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€.

μ΄ν›„μ—λŠ” "μž…λ ₯된 문자: "λΌλŠ” λ©”μ‹œμ§€μ™€ ν•¨κ»˜ ch λ³€μˆ˜μ— μ €μž₯된 λ¬Έμžκ°€ 좜λ ₯λ©λ‹ˆλ‹€. printf ν•¨μˆ˜μ˜ %c ν˜•μ‹ μ§€μ •μžλŠ” 문자λ₯Ό 좜λ ₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ‘œ 'A'λ₯Ό μž…λ ₯ν•˜λ©΄ 화면에 "μž…λ ₯된 문자: A"λΌλŠ” κ²°κ³Όκ°€ 좜λ ₯λ©λ‹ˆλ‹€.

getch ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 예제 μ½”λ“œλŠ” μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 톡해 ν”„λ‘œκ·Έλž¨μ˜ λ™μž‘μ„ μ œμ–΄ν•˜κ±°λ‚˜ νŠΉμ • ν‚€ μž…λ ₯에 λ”°λ₯Έ 처리λ₯Ό μˆ˜ν–‰ν•˜λŠ” λ“± λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ ν™œμš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.

- getch ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 예제 μ½”λ“œ

μ•„λž˜μ˜ 예제 μ½”λ“œλŠ” getch ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžλ‘œλΆ€ν„° ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 과정을 λ³΄μ—¬μ£ΌλŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("문자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");  // μ‚¬μš©μžμ—κ²Œ μž…λ ₯ μš”μ²­

    ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜ ch에 μ €μž₯

    printf("μž…λ ₯된 문자: %c\n", ch);  // μž…λ ₯된 문자 좜λ ₯

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같은 과정이 μ§„ν–‰λ©λ‹ˆλ‹€.

  1. "문자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: "λΌλŠ” λ©”μ‹œμ§€κ°€ 화면에 ν‘œμ‹œλ©λ‹ˆλ‹€. μ΄λŠ” μ‚¬μš©μžμ—κ²Œ μž…λ ₯을 μš”μ²­ν•˜λŠ” λ©”μ‹œμ§€μž…λ‹ˆλ‹€.

  2. μ‚¬μš©μžκ°€ μ–΄λ–€ 문자λ₯Ό μž…λ ₯ν•˜κΈ° μœ„ν•΄ ν‚€λ³΄λ“œλ₯Ό λˆ„λ¦…λ‹ˆλ‹€. μ΄λ•Œ getch ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ–΄ ν‚€λ³΄λ“œ μž…λ ₯을 μ¦‰μ‹œ λ°˜ν™˜ν•©λ‹ˆλ‹€.

  3. λ°˜ν™˜λœ λ¬ΈμžλŠ” ch λ³€μˆ˜μ— μ €μž₯λ©λ‹ˆλ‹€. 이 λ³€μˆ˜λŠ” char μžλ£Œν˜•μœΌλ‘œ μ„ μ–Έλ˜μ–΄ μžˆμœΌλ―€λ‘œ, ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯받은 문자λ₯Ό μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  4. λ§ˆμ§€λ§‰μœΌλ‘œ "μž…λ ₯된 문자: "λΌλŠ” λ©”μ‹œμ§€μ™€ ν•¨κ»˜ ch λ³€μˆ˜μ— μ €μž₯된 λ¬Έμžκ°€ 좜λ ₯λ©λ‹ˆλ‹€. printf ν•¨μˆ˜μ˜ %c ν˜•μ‹ μ§€μ •μžλŠ” 문자λ₯Ό 좜λ ₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ‘œ 'A'λ₯Ό μž…λ ₯ν•˜λ©΄ 화면에 "μž…λ ₯된 문자: A"λΌλŠ” κ²°κ³Όκ°€ 좜λ ₯λ©λ‹ˆλ‹€.

getch ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 예제 μ½”λ“œλŠ” μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 톡해 ν”„λ‘œκ·Έλž¨μ˜ λ™μž‘μ„ μ œμ–΄ν•˜κ±°λ‚˜ νŠΉμ • ν‚€ μž…λ ₯에 λ”°λ₯Έ 처리λ₯Ό μˆ˜ν–‰ν•˜λŠ” λ“± λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ ν™œμš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.

3. kbhit ν•¨μˆ˜

kbhit ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯을 ν™•μΈν•˜λŠ” ν•¨μˆ˜λ‘œ, μ‚¬μš©μžκ°€ μž…λ ₯ν•˜λ©΄ 1을 λ°˜ν™˜ν•˜κ³  μ•„λ‹ˆλ©΄ 0을 λ°˜ν™˜ν•©λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” Windows의 <conio.h> λΌμ΄λΈŒλŸ¬λ¦¬μ— ν¬ν•¨λ˜μ–΄ μžˆμœΌλ―€λ‘œ, Windows ν™˜κ²½μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ•„λž˜μ˜ 예제 μ½”λ“œλŠ” kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 과정을 λ³΄μ—¬μ£ΌλŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    char ch;

    printf("ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€...\n");

    while (!kbhit()) {}  // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆμ„ λ•ŒκΉŒμ§€ 반볡

    ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜ ch에 μ €μž₯

    printf("μž…λ ₯된 문자: %c\n", ch);  // μž…λ ₯된 문자 좜λ ₯

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같은 과정이 μ§„ν–‰λ©λ‹ˆλ‹€.

  1. "ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€..."λΌλŠ” λ©”μ‹œμ§€κ°€ 화면에 ν‘œμ‹œλ©λ‹ˆλ‹€. μ΄λŠ” μ‚¬μš©μžμ—κ²Œ ν‚€λ³΄λ“œ μž…λ ₯을 기닀리고 μžˆλ‹€λŠ” λ©”μ‹œμ§€μž…λ‹ˆλ‹€.

  2. kbhit ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ–΄ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆμ„ λ•ŒκΉŒμ§€ λŒ€κΈ°ν•©λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 있으면 1을 λ°˜ν™˜ν•˜κ³ , μ•„λ‹ˆλ©΄ 0을 λ°˜ν™˜ν•©λ‹ˆλ‹€. λ”°λΌμ„œ kbhit()의 κ²°κ³Όκ°€ 0이 μ•„λ‹ˆλ©΄ λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•˜κ³  λ‹€μŒ μ½”λ“œλ‘œ μ§„ν–‰ν•©λ‹ˆλ‹€.

  3. getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›μ•„μ„œ ch λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. getch ν•¨μˆ˜λŠ” conio.h λΌμ΄λΈŒλŸ¬λ¦¬μ— ν¬ν•¨λœ ν•¨μˆ˜λ‘œ, ν‚€λ³΄λ“œ μž…λ ₯을 μ¦‰μ‹œ λ°˜ν™˜ν•©λ‹ˆλ‹€.

  4. λ§ˆμ§€λ§‰μœΌλ‘œ "μž…λ ₯된 문자: "λΌλŠ” λ©”μ‹œμ§€μ™€ ν•¨κ»˜ ch λ³€μˆ˜μ— μ €μž₯된 λ¬Έμžκ°€ 좜λ ₯λ©λ‹ˆλ‹€. printf ν•¨μˆ˜μ˜ %c ν˜•μ‹ μ§€μ •μžλŠ” 문자λ₯Ό 좜λ ₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ‘œ 'A'λ₯Ό μž…λ ₯ν•˜λ©΄ 화면에 "μž…λ ₯된 문자: A"λΌλŠ” κ²°κ³Όκ°€ 좜λ ₯λ©λ‹ˆλ‹€.

kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑에 ν‚€λ³΄λ“œ μž…λ ₯을 μ‹€μ‹œκ°„μœΌλ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό ν™œμš©ν•˜μ—¬ νŠΉμ • ν‚€ μž…λ ₯에 λ”°λ₯Έ 처리λ₯Ό μˆ˜ν–‰ν•˜κ±°λ‚˜ μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 톡해 ν”„λ‘œκ·Έλž¨μ˜ λ™μž‘μ„ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

- kbhit ν•¨μˆ˜μ˜ μ •μ˜μ™€ μ‚¬μš©λ²•

kbhit ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯을 ν™•μΈν•˜λŠ” ν•¨μˆ˜λ‘œ, μ‚¬μš©μžκ°€ ν‚€λ₯Ό λˆ„λ₯΄λ©΄ 1을 λ°˜ν™˜ν•˜κ³  μ•„λ‹ˆλ©΄ 0을 λ°˜ν™˜ν•©λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” <conio.h> λΌμ΄λΈŒλŸ¬λ¦¬μ— ν¬ν•¨λ˜μ–΄ 있으며, Windows ν™˜κ²½μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

kbhit ν•¨μˆ˜μ˜ μ •μ˜

#include <conio.h>

int kbhit(void);

kbhit ν•¨μˆ˜μ˜ μ‚¬μš©λ²•

  1. μœ„μ˜ 예제 μ½”λ“œμ—μ„œμ²˜λŸΌ <conio.h>λ₯Ό ν¬ν•¨ν•˜κ³  kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ €λ©΄, ν•΄λ‹Ή 헀더 νŒŒμΌμ„ 상단에 ν¬ν•¨μ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€.
#include <conio.h>
  1. kbhit() ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 있으면 1을 λ°˜ν™˜ν•˜κ³ , ν‚€λ³΄λ“œ μž…λ ₯이 μ—†μœΌλ©΄ 0을 λ°˜ν™˜ν•©λ‹ˆλ‹€. λ”°λΌμ„œ, kbhit()λ₯Ό 쑰건으둜 μ‚¬μš©ν•˜μ—¬ λ°˜λ³΅λ¬Έμ„ μ‹€ν–‰ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λŒ€κΈ°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
while (!kbhit()) {
    // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆμ„ λ•ŒκΉŒμ§€ λŒ€κΈ°
}
  1. ν‚€λ³΄λ“œ μž…λ ₯이 있으면 λ°˜λ³΅λ¬Έμ„ λΉ μ Έλ‚˜μ™€μ„œ λ‹€μŒ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
char ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯
  1. getch() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 μ¦‰μ‹œ λ°˜ν™˜λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” conio.h λΌμ΄λΈŒλŸ¬λ¦¬μ— ν¬ν•¨λœ ν•¨μˆ˜λ‘œ, ν‚€λ³΄λ“œ μž…λ ₯을 μ¦‰μ‹œ λ°˜ν™˜ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ‘œ 'A'λ₯Ό μž…λ ₯ν•˜λ©΄ getch() ν•¨μˆ˜λŠ” 'A'λ₯Ό μ¦‰μ‹œ λ°˜ν™˜ν•˜κ³ , 이λ₯Ό λ³€μˆ˜ ch에 μ €μž₯ν•©λ‹ˆλ‹€.

  1. kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 μ‹€μ‹œκ°„μœΌλ‘œ 확인할 수 μžˆμœΌλ―€λ‘œ, 이λ₯Ό ν™œμš©ν•˜μ—¬ νŠΉμ • ν‚€ μž…λ ₯에 λ”°λ₯Έ 처리λ₯Ό μˆ˜ν–‰ν•˜κ±°λ‚˜ μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 톡해 ν”„λ‘œκ·Έλž¨μ˜ λ™μž‘μ„ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
if (kbhit()) {
    // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆμ„ λ•Œμ˜ 처리
    char ch = getch();
    // ...
}

μœ„μ˜ 예제 μ½”λ“œμ—μ„œλŠ” kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•œ ν›„, μž…λ ₯이 있으면 ν•΄λ‹Ή ν‚€λ₯Ό 받아와 μ²˜λ¦¬ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑에 ν‚€λ³΄λ“œ μž…λ ₯을 μ‹€μ‹œκ°„μœΌλ‘œ 확인할 수 있으며, ν‚€λ³΄λ“œ μž…λ ₯을 효율적으둜 μ²˜λ¦¬ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

- kbhit ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” 예제 μ½”λ“œ

μ•„λž˜μ˜ 예제 μ½”λ“œλŠ” kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 ν™•μΈν•˜κ³ , μž…λ ₯이 μžˆμ„ 경우 ν•΄λ‹Ή ν‚€λ₯Ό 화면에 좜λ ₯ν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    printf("ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€...\n");

    while (1) {
        if (kbhit()) {  // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ 확인
            char ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯
            printf("μž…λ ₯된 ν‚€: %c\n", ch);  // μž…λ ₯된 ν‚€ 좜λ ₯
            break;  // μž…λ ₯이 있으면 λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
        }
    }

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같은 과정이 μ§„ν–‰λ©λ‹ˆλ‹€:

  1. "ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€..."λΌλŠ” λ©”μ‹œμ§€κ°€ 화면에 ν‘œμ‹œλ©λ‹ˆλ‹€. μ΄λŠ” μ‚¬μš©μžμ—κ²Œ ν‚€λ³΄λ“œ μž…λ ₯을 기닀리고 μžˆλ‹€λŠ” λ©”μ‹œμ§€μž…λ‹ˆλ‹€.

  2. while λ¬Έ μ•ˆμ—μ„œ κ³„μ†ν•˜μ—¬ kbhit ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

  3. ν‚€λ³΄λ“œ μž…λ ₯이 있으면 getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€.

  4. μž…λ ₯된 ν‚€λ₯Ό 화면에 좜λ ₯ν•©λ‹ˆλ‹€.

  5. μž…λ ₯이 있으면 λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•˜κ³  ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.

kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 ν™•μΈν•˜λŠ” 예제 μ½”λ“œλ₯Ό 톡해, μ‚¬μš©μžκ°€ ν‚€λ₯Ό μž…λ ₯ν•˜λ©΄ ν•΄λ‹Ή ν‚€λ₯Ό μ¦‰μ‹œ ν™•μΈν•˜κ³  μ²˜λ¦¬ν•  수 μžˆλŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑에 μ‹€μ‹œκ°„μœΌλ‘œ ν‚€λ³΄λ“œ μž…λ ₯을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

kbhit ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯ μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” 예제 μ½”λ“œ

μ•„λž˜μ˜ 예제 μ½”λ“œλŠ” kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 ν™•μΈν•˜κ³ , μž…λ ₯이 μžˆμ„ 경우 ν•΄λ‹Ή ν‚€λ₯Ό 화면에 좜λ ₯ν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    printf("ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€...\n");

    while (1) {
        if (kbhit()) {  // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ 확인
            char ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯
            printf("μž…λ ₯된 ν‚€: %c\n", ch);  // μž…λ ₯된 ν‚€ 좜λ ₯
            break;  // μž…λ ₯이 있으면 λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
        }
    }

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같은 과정이 μ§„ν–‰λ©λ‹ˆλ‹€:

  1. "ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€..."λΌλŠ” λ©”μ‹œμ§€κ°€ 화면에 ν‘œμ‹œλ©λ‹ˆλ‹€. μ΄λŠ” μ‚¬μš©μžμ—κ²Œ ν‚€λ³΄λ“œ μž…λ ₯을 기닀리고 μžˆλ‹€λŠ” λ©”μ‹œμ§€μž…λ‹ˆλ‹€.

  2. while λ¬Έ μ•ˆμ—μ„œ κ³„μ†ν•˜μ—¬ kbhit ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

  3. ν‚€λ³΄λ“œ μž…λ ₯이 있으면 getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€.

  4. μž…λ ₯된 ν‚€λ₯Ό 화면에 좜λ ₯ν•©λ‹ˆλ‹€.

  5. μž…λ ₯이 있으면 λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•˜κ³  ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.

kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 ν™•μΈν•˜λ©΄, ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑에 μ‚¬μš©μžμ˜ ν‚€ μž…λ ₯을 μ‹€μ‹œκ°„μœΌλ‘œ 감지할 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό ν™œμš©ν•˜μ—¬ νŠΉμ • ν‚€ μž…λ ₯에 λŒ€ν•œ 처리λ₯Ό μˆ˜ν–‰ν•˜κ±°λ‚˜ μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ 톡해 ν”„λ‘œκ·Έλž¨μ˜ λ™μž‘μ„ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, νŠΉμ • ν‚€λ₯Ό λˆŒλ €μ„ λ•Œ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•˜λŠ” λ“±μ˜ λ™μž‘μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

4. getch와 kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜κΈ°

getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λŠ” 같이 μ‚¬μš©ν•˜λ©΄ ν‚€λ³΄λ“œ μž…λ ₯을 μ‹€μ‹œκ°„μœΌλ‘œ κ°μ§€ν•˜κ³  μ²˜λ¦¬ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. kbhit ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό ν™•μΈν•˜κ³ , getch ν•¨μˆ˜λŠ” μ‹€μ œλ‘œ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›μŠ΅λ‹ˆλ‹€. μ•„λž˜ 예제 μ½”λ“œλ₯Ό 톡해 ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    printf("ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€...\n");

    while (1) {
        if (kbhit()) {  // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ 확인
            char ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯

            if (ch == 'q') {  // λ§Œμ•½ μž…λ ₯된 ν‚€κ°€ 'q'라면
                printf("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.\n");
                break;  // λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
            }

            printf("μž…λ ₯된 ν‚€: %c\n", ch);  // μž…λ ₯된 ν‚€ 좜λ ₯
        }
    }

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같은 과정이 μ§„ν–‰λ©λ‹ˆλ‹€:

  1. "ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€..."λΌλŠ” λ©”μ‹œμ§€κ°€ 화면에 좜λ ₯λ©λ‹ˆλ‹€. μ΄λŠ” μ‚¬μš©μžμ—κ²Œ ν‚€λ³΄λ“œ μž…λ ₯을 기닀리고 μžˆλ‹€λŠ” λ©”μ‹œμ§€μž…λ‹ˆλ‹€.

  2. while λ¬Έ μ•ˆμ—μ„œ kbhit ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

  3. kbhit ν•¨μˆ˜κ°€ trueλ₯Ό λ°˜ν™˜ν•˜λ©΄, getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹€μ œλ‘œ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›μŠ΅λ‹ˆλ‹€.

  4. μž…λ ₯된 ν‚€λ₯Ό λ³€μˆ˜ ch에 μ €μž₯ν•©λ‹ˆλ‹€.

  5. λ§Œμ•½ μž…λ ₯된 ν‚€κ°€ 'q'라면, "ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³ , break 문을 μ΄μš©ν•˜μ—¬ λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•©λ‹ˆλ‹€.

  6. μž…λ ₯된 ν‚€κ°€ 'q'κ°€ μ•„λ‹ˆλΌλ©΄, μž…λ ₯된 ν‚€λ₯Ό 화면에 좜λ ₯ν•©λ‹ˆλ‹€.

  7. 반볡문이 λ‹€μ‹œ μ‹œμž‘ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 ν™•μΈν•˜κ³  λ°›λŠ” 과정을 κ³„μ†ν•©λ‹ˆλ‹€.

이와 같이 getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ μ‚¬μš©μžκ°€ νŠΉμ • ν‚€λ₯Ό μž…λ ₯ν•  λ•Œ μ›ν•˜λŠ” λ™μž‘μ„ μˆ˜ν–‰ν•˜λ„λ‘ ν”„λ‘œκ·Έλž¨μ„ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” μž…λ ₯된 ν‚€κ°€ 'q'일 λ•Œ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•˜λ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. λ‹€μ–‘ν•œ 킀에 λŒ€ν•œ 처리λ₯Ό μΆ”κ°€ν•˜μ—¬ μ›ν•˜λŠ” λ™μž‘μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

- getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό μ‘°ν•©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 예제 μ½”λ“œ

getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ ν‚€λ³΄λ“œ μž…λ ₯을 μ‹€μ‹œκ°„μœΌλ‘œ 받을 수 μžˆμŠ΅λ‹ˆλ‹€. kbhit ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•˜κ³ , getch ν•¨μˆ˜λŠ” μ‹€μ œλ‘œ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›μŠ΅λ‹ˆλ‹€. 이 두 ν•¨μˆ˜λ₯Ό μ‘°ν•©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 예제 μ½”λ“œλ₯Ό ν™•μΈν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    printf("ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€...\n");

    while (1) {
        if (kbhit()) {  // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ 확인
            char ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯

            printf("μž…λ ₯된 ν‚€: %c\n", ch);  // μž…λ ₯된 ν‚€ 좜λ ₯

            if (ch == 'q') {  // λ§Œμ•½ μž…λ ₯된 ν‚€κ°€ 'q'라면
                printf("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.\n");
                break;  // λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
            }
        }
    }

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œλŠ” λ‹€μŒκ³Ό 같은 λ‹¨κ³„λ‘œ λ™μž‘ν•©λ‹ˆλ‹€:

  1. "ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€..."λΌλŠ” λ©”μ‹œμ§€κ°€ 좜λ ₯λ©λ‹ˆλ‹€. μ΄λŠ” μ‚¬μš©μžμ—κ²Œ ν‚€λ³΄λ“œ μž…λ ₯을 받을 μ€€λΉ„κ°€ λ˜μ–΄μžˆλ‹€λŠ” λ©”μ‹œμ§€μž…λ‹ˆλ‹€.

  2. while λ£¨ν”„μ—μ„œ kbhit ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

  3. kbhit ν•¨μˆ˜κ°€ trueλ₯Ό λ°˜ν™˜ν•˜λ©΄, getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹€μ œλ‘œ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›μŠ΅λ‹ˆλ‹€.

  4. μž…λ ₯된 ν‚€λ₯Ό λ³€μˆ˜ ch에 μ €μž₯ν•˜κ³ , "μž…λ ₯된 ν‚€: "와 ν•¨κ»˜ μž…λ ₯된 ν‚€λ₯Ό 화면에 좜λ ₯ν•©λ‹ˆλ‹€.

  5. λ§Œμ•½ μž…λ ₯된 ν‚€κ°€ 'q'와 λ™μΌν•˜λ‹€λ©΄, "ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³  break 문을 μ‚¬μš©ν•˜μ—¬ while 루프λ₯Ό μ’…λ£Œν•©λ‹ˆλ‹€.

  6. μž…λ ₯된 ν‚€κ°€ 'q'κ°€ μ•„λ‹ˆλΌλ©΄, while 루프λ₯Ό 계속 μ‹€ν–‰ν•˜μ—¬ λ‹€μŒ ν‚€λ³΄λ“œ μž…λ ₯을 λŒ€κΈ°ν•©λ‹ˆλ‹€.

이와 같이 getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό μ‘°ν•©ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ—μ„œ μ‹€μ‹œκ°„μœΌλ‘œ ν‚€λ³΄λ“œ μž…λ ₯을 받을 수 μžˆμŠ΅λ‹ˆλ‹€. μœ„μ˜ 예제 μ½”λ“œμ—μ„œλŠ” μž…λ ₯된 ν‚€λ₯Ό 좜λ ₯ν•˜κ³  'q' μž…λ ₯ μ‹œ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•˜λŠ” λ™μž‘μ„ κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ‚¬μš©μžκ°€ νŠΉμ • ν‚€λ₯Ό λˆ„λ₯Ό λ•Œ μ›ν•˜λŠ” λ™μž‘μ„ μˆ˜ν–‰ν•˜λ„λ‘ μ½”λ“œλ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

- getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό μ‘°ν•©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” 예제 μ½”λ“œ

getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λŠ” ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ ν‚€λ³΄λ“œ μž…λ ₯을 μ‹€μ‹œκ°„μœΌλ‘œ κ°μ§€ν•˜κ³  μ²˜λ¦¬ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. kbhit ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό ν™•μΈν•˜κ³ , getch ν•¨μˆ˜λŠ” μ‹€μ œλ‘œ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›μŠ΅λ‹ˆλ‹€. μ•„λž˜ 예제 μ½”λ“œλ₯Ό 톡해 ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

#include <stdio.h>
#include <conio.h>

int main() {
    printf("ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€...\n");

    while (1) {
        if (kbhit()) {  // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ 확인
            char ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯

            if (ch == 'q') {  // λ§Œμ•½ μž…λ ₯된 ν‚€κ°€ 'q'라면
                printf("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.\n");
                break;  // λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
            }

            printf("μž…λ ₯된 ν‚€: %c\n", ch);  // μž…λ ₯된 ν‚€ 좜λ ₯
        }
    }

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같은 과정이 μ§„ν–‰λ©λ‹ˆλ‹€:

  1. "ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€..."λΌλŠ” λ©”μ‹œμ§€κ°€ 화면에 좜λ ₯λ©λ‹ˆλ‹€. μ΄λŠ” μ‚¬μš©μžμ—κ²Œ ν‚€λ³΄λ“œ μž…λ ₯을 기닀리고 μžˆλ‹€λŠ” λ©”μ‹œμ§€μž…λ‹ˆλ‹€.

  2. while λ¬Έ μ•ˆμ—μ„œ kbhit ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

  3. kbhit ν•¨μˆ˜κ°€ trueλ₯Ό λ°˜ν™˜ν•˜λ©΄, getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹€μ œλ‘œ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›μŠ΅λ‹ˆλ‹€.

  4. μž…λ ₯된 ν‚€λ₯Ό λ³€μˆ˜ ch에 μ €μž₯ν•©λ‹ˆλ‹€.

  5. λ§Œμ•½ μž…λ ₯된 ν‚€κ°€ 'q'라면, "ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³ , break 문을 μ΄μš©ν•˜μ—¬ λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•©λ‹ˆλ‹€.

  6. μž…λ ₯된 ν‚€κ°€ 'q'κ°€ μ•„λ‹ˆλΌλ©΄, μž…λ ₯된 ν‚€λ₯Ό 화면에 좜λ ₯ν•©λ‹ˆλ‹€.

  7. 반볡문이 λ‹€μ‹œ μ‹œμž‘ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 ν™•μΈν•˜κ³  λ°›λŠ” 과정을 κ³„μ†ν•©λ‹ˆλ‹€.

이와 같이 getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ μ‚¬μš©μžκ°€ νŠΉμ • ν‚€λ₯Ό μž…λ ₯ν•  λ•Œ μ›ν•˜λŠ” λ™μž‘μ„ μˆ˜ν–‰ν•˜λ„λ‘ ν”„λ‘œκ·Έλž¨μ„ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” μž…λ ₯된 ν‚€κ°€ 'q'일 λ•Œ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•˜λ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. λ‹€μ–‘ν•œ 킀에 λŒ€ν•œ 처리λ₯Ό μΆ”κ°€ν•˜μ—¬ μ›ν•˜λŠ” λ™μž‘μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

- ν™œμš© 예제

getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό μ‘°ν•©ν•˜μ—¬ μ‹€μ‹œκ°„μœΌλ‘œ ν‚€λ³΄λ“œ μž…λ ₯을 λ°›λŠ” κΈ°λŠ₯을 ν™œμš©ν•  수 μžˆλŠ” λ‹€μ–‘ν•œ 예제λ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

예제 1: ν‚€ μž…λ ₯ λŒ€κΈ° μ‹œκ°„ μ„€μ •ν•˜κΈ°

#include <stdio.h>
#include <conio.h>
#include <time.h>

int main() {
    printf("ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” μ€‘μž…λ‹ˆλ‹€...\n");

    clock_t start_time = clock();  // ν”„λ‘œκ·Έλž¨ μ‹œμž‘ μ‹œκ°„ μ €μž₯
    double wait_time = 3.0;  // 3초 λ™μ•ˆ ν‚€λ³΄λ“œ μž…λ ₯을 λŒ€κΈ°ν•˜λŠ” μ‹œκ°„

    while (1) {
        if (kbhit()) {  // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ 확인
            char ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯

            printf("μž…λ ₯된 ν‚€: %c\n", ch);  // μž…λ ₯된 ν‚€ 좜λ ₯

            if (ch == 'q') {  // λ§Œμ•½ μž…λ ₯된 ν‚€κ°€ 'q'라면
                printf("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.\n");
                break;  // λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
            }
        }

        // ν‚€ μž…λ ₯ λŒ€κΈ° μ‹œκ°„μ΄ κ²½κ³Όν•˜λ©΄ λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
        if ((clock() - start_time) / (double)CLOCKS_PER_SEC >= wait_time) {
            printf("μ‹œκ°„μ΄ μ΄ˆκ³Όλ˜μ–΄ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.\n");
            break;
        }
    }

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œλŠ” 3초 λ™μ•ˆ ν‚€λ³΄λ“œ μž…λ ₯을 κΈ°λ‹€λ¦¬λŠ” λ™μž‘μ„ κ΅¬ν˜„ν•œ μ˜ˆμ œμž…λ‹ˆλ‹€.

  1. clock ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν”„λ‘œκ·Έλž¨ μ‹œμž‘ μ‹œκ°„μ„ μ €μž₯ν•©λ‹ˆλ‹€.

  2. while λ¬Έμ—μ„œ kbhit ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

  3. λ§Œμ•½ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλ‹€λ©΄, getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹€μ œ μž…λ ₯된 ν‚€λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.

  4. μž…λ ₯된 ν‚€λ₯Ό 화면에 좜λ ₯ν•˜κ³ , λ§Œμ•½ μž…λ ₯된 ν‚€κ°€ 'q'라면 ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.

  5. ν‚€ μž…λ ₯ λŒ€κΈ° μ‹œκ°„μ΄ κ²½κ³Όν–ˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄, ν˜„μž¬ μ‹œκ°„κ³Ό ν”„λ‘œκ·Έλž¨ μ‹œμž‘ μ‹œκ°„μ„ λΉ„κ΅ν•©λ‹ˆλ‹€.

  6. clock ν•¨μˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λœ 이후 κ²½κ³Όν•œ μ‹œκ°„μ„ λ°˜ν™˜ν•˜λŠ”λ°, 이λ₯Ό 초 λ‹¨μœ„λ‘œ λ³€ν™˜ν•˜κΈ° μœ„ν•΄ CLOCKS_PER_SEC으둜 λ‚˜λˆ„μ–΄μ€λ‹ˆλ‹€.

  7. ν‚€ μž…λ ₯ λŒ€κΈ° μ‹œκ°„μ΄ κ²½κ³Ό 경우, "μ‹œκ°„μ΄ μ΄ˆκ³Όλ˜μ–΄ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³  λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•©λ‹ˆλ‹€.

예제 2: νŠΉμ • ν‚€ μ‘°ν•© μž…λ ₯ λ°›κΈ°

#include <stdio.h>
#include <conio.h>

int main() {
    printf("w, a, s, d ν‚€λ₯Ό μ‘°ν•©ν•˜μ—¬ μ΄λ™ν•˜μ„Έμš”.\n");

    int x = 0;  // x μ’Œν‘œ
    int y = 0;  // y μ’Œν‘œ

    while (1) {
        if (kbhit()) {  // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ 확인
            char ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯

            switch (ch) {
                case 'w':
                    y--;
                    break;
                case 'a':
                    x--;
                    break;
                case 's':
                    y++;
                    break;
                case 'd':
                    x++;
                    break;
                case 'q':
                    printf("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.\n");
                    return 0;
            }

            printf("ν˜„μž¬ μœ„μΉ˜: (%d, %d)\n", x, y);
        }
    }

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œλŠ” ν‚€λ³΄λ“œλ‘œ 'w', 'a', 's', 'd' 쑰합을 μž…λ ₯λ°›μ•„ μ’Œν‘œλ₯Ό μ΄λ™μ‹œν‚€λŠ” λ™μž‘μ„ κ΅¬ν˜„ν•œ μ˜ˆμ œμž…λ‹ˆλ‹€.

  1. "w, a, s, d ν‚€λ₯Ό μ‘°ν•©ν•˜μ—¬ μ΄λ™ν•˜μ„Έμš”."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

  2. x와 y λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ’Œν‘œλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

  3. kbhit ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

  4. getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹€μ œ μž…λ ₯된 ν‚€λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.

  5. μž…λ ₯된 ν‚€κ°€ 'w'인 경우 y 값을 κ°μ†Œμ‹œν‚€κ³ , 'a'인 경우 x 값을 κ°μ†Œμ‹œν‚΅λ‹ˆλ‹€.

  6. μž…λ ₯된 ν‚€κ°€ 's'인 경우 y 값을 μ¦κ°€μ‹œν‚€κ³ , 'd'인 경우 x 값을 μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€.

  7. μž…λ ₯된 ν‚€κ°€ 'q'인 경우, "ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³  ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.

  8. ν˜„μž¬ μœ„μΉ˜μΈ x와 y 값을 좜λ ₯ν•©λ‹ˆλ‹€.

이와 같이 getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜λ©΄ μ‚¬μš©μžκ°€ μž…λ ₯ν•œ ν‚€λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ κ°μ§€ν•˜κ³ , μž…λ ₯된 킀에 맞게 ν”„λ‘œκ·Έλž¨μ„ μ œμ–΄ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예제 μ½”λ“œμ—μ„œλŠ” μ‹œκ°„ μ œν•œμ΄λ‚˜ νŠΉμ • ν‚€ 쑰합에 따라 ν”„λ‘œκ·Έλž¨μ˜ λ™μž‘μ„ μ‘°μ ˆν•˜λŠ” 두 가지 예λ₯Ό μ‚΄νŽ΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€. ν•„μš”μ— 따라 μ΄λŸ¬ν•œ κΈ°λŠ₯을 μ‘μš©ν•˜μ—¬ λ‹€μ–‘ν•œ ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

- getch와 kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“œλŠ” 예제 μ½”λ“œ

μ•„λž˜λŠ” getch와 kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“œλŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

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

int main() {
    int target = rand() % 10;  // 0 ~ 9 쀑 λžœλ€ν•œ 숫자 지정
    int count = 0;  // μ‹œλ„ 횟수

    printf("1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 ν•˜λ‚˜λ₯Ό λ§žμΆ°λ³΄μ„Έμš”.\n");

    while (1) {
        if (kbhit()) {  // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ 확인
            char ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯

            if (ch == 'q') {  // λ§Œμ•½ μž…λ ₯된 ν‚€κ°€ 'q'라면
                printf("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.\n");
                break;  // λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
            }

            int guess = ch - '0';  // charλ₯Ό int둜 λ³€ν™˜ν•˜μ—¬ μΆ”μΈ‘ κ°’μœΌλ‘œ μ‚¬μš©

            if (guess < 1 || guess > 9) {  // μž…λ ₯된 μˆ«μžκ°€ λ²”μœ„λ₯Ό λ²—μ–΄λ‚œ 경우
                printf("잘λͺ»λœ μž…λ ₯μž…λ‹ˆλ‹€. 1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•˜μ„Έμš”.\n");
                continue;  // 반볡문의 λ‹€μŒ 반볡으둜 이동
            }

            count++;  // μ‹œλ„ 횟수 증가

            if (guess == target) {  // μž…λ ₯ν•œ μˆ«μžκ°€ 정닡인 경우
                printf("μ •λ‹΅μž…λ‹ˆλ‹€! μ‹œλ„ 횟수: %d\n", count);
                break;  // λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
            } else if (guess < target) {
                printf("더 큰 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”.\n");
            } else {
                printf("더 μž‘μ€ 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”.\n");
            }
        }
    }

    return 0;
}

μœ„μ˜ 예제 μ½”λ“œλŠ” 1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 숫자λ₯Ό λ§žμΆ”λŠ” κ²Œμž„μ„ κ΅¬ν˜„ν•œ μ½”λ“œμž…λ‹ˆλ‹€.

  1. rand ν•¨μˆ˜μ™€ % μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜μ—¬ 0λΆ€ν„° 9κΉŒμ§€μ˜ λžœλ€ν•œ 숫자λ₯Ό μƒμ„±ν•˜κ³ , target λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€.

  2. μ‚¬μš©μžμ—κ²Œ "1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 ν•˜λ‚˜λ₯Ό λ§žμΆ°λ³΄μ„Έμš”."λΌλŠ” μ•ˆλ‚΄ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

  3. while 문을 μ‚¬μš©ν•˜μ—¬ κ²Œμž„μ΄ μ§„ν–‰λ˜λŠ” λ™μ•ˆ 반볡 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

  4. kbhit ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

  5. getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹€μ œλ‘œ ν‚€λ³΄λ“œμ—μ„œ μž…λ ₯된 ν‚€λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.

  6. μž…λ ₯된 ν‚€κ°€ 'q'인 경우, "ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³ , λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•©λ‹ˆλ‹€.

  7. μž…λ ₯된 ν‚€λ₯Ό guess λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. μ΄λ•Œ, μž…λ ₯된 문자λ₯Ό 숫자둜 λ³€ν™˜ν•˜κΈ° μœ„ν•΄ '0'을 λΉΌμ€λ‹ˆλ‹€.

  8. μž…λ ₯된 μˆ«μžκ°€ 1λΆ€ν„° 9κΉŒμ§€μ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚œ 경우, "잘λͺ»λœ μž…λ ₯μž…λ‹ˆλ‹€. 1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•˜μ„Έμš”."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³ , 반볡문의 λ‹€μŒ 반볡으둜 μ΄λ™ν•©λ‹ˆλ‹€.

  9. μ‹œλ„ 횟수λ₯Ό μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€.

  10. μž…λ ₯ν•œ μˆ«μžμ™€ target λ³€μˆ˜κ°€ λ™μΌν•œ 경우, "μ •λ‹΅μž…λ‹ˆλ‹€! μ‹œλ„ 횟수: %d"λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³ , λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•©λ‹ˆλ‹€.

  11. μž…λ ₯ν•œ μˆ«μžκ°€ target λ³€μˆ˜λ³΄λ‹€ μž‘μ„ 경우, "더 큰 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

  12. μž…λ ₯ν•œ μˆ«μžκ°€ target λ³€μˆ˜λ³΄λ‹€ 클 경우, "더 μž‘μ€ 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

이와 같이 getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜λ©΄ ν‚€λ³΄λ“œ μž…λ ₯을 κ°μ§€ν•˜κ³ , μ›ν•˜λŠ” λ™μž‘μ„ μˆ˜ν–‰ν•˜λŠ” κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. μœ„μ˜ 예제 μ½”λ“œμ—μ„œλŠ” μ‚¬μš©μžκ°€ 정닡을 맞좜 λ•ŒκΉŒμ§€ 숫자λ₯Ό μž…λ ₯λ°›λŠ” κ²Œμž„μ„ κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. λ‹€μ–‘ν•œ κ²Œμž„μ„ λ§Œλ“€κ±°λ‚˜ λ‹€λ₯Έ κΈ°λŠ₯을 μΆ”κ°€ν•˜μ—¬ μ›ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ²Œμž„μ˜ λ‚œμ΄λ„λ₯Ό μ‘°μ ˆν•˜κΈ° μœ„ν•΄ λ‹€μ–‘ν•œ μš”μ†Œλ“€μ„ μΆ”κ°€ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

- getch와 kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“œλŠ” 예제 μ½”λ“œ

μ•„λž˜λŠ” getch와 kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“œλŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

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

int main() {
    int target = rand() % 10;  // 0 ~ 9 쀑 λžœλ€ν•œ 숫자 지정
    int count = 0;  // μ‹œλ„ 횟수

    printf("1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 ν•˜λ‚˜λ₯Ό λ§žμΆ°λ³΄μ„Έμš”.\n");

    while (1) {
        if (kbhit()) {  // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ 확인
            char ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯

            if (ch == 'q') {  // λ§Œμ•½ μž…λ ₯된 ν‚€κ°€ 'q'라면
                printf("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.\n");
                break;  // λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
            }

            int guess = ch - '0';  // charλ₯Ό int둜 λ³€ν™˜ν•˜μ—¬ μΆ”μΈ‘ κ°’μœΌλ‘œ μ‚¬μš©

            if (guess < 1 || guess > 9) {  // μž…λ ₯된 μˆ«μžκ°€ λ²”μœ„λ₯Ό λ²—μ–΄λ‚œ 경우
                printf("잘λͺ»λœ μž…λ ₯μž…λ‹ˆλ‹€. 1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•˜μ„Έμš”.\n");
                continue;  // 반볡문의 λ‹€μŒ 반볡으둜 이동
            }

            count++;  // μ‹œλ„ 횟수 증가

            if (guess == target) {  // μž…λ ₯ν•œ μˆ«μžκ°€ 정닡인 경우
                printf("μ •λ‹΅μž…λ‹ˆλ‹€! μ‹œλ„ 횟수: %d\n", count);
                break;  // λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
            } else if (guess < target) {
                printf("더 큰 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”.\n");
            } else {
                printf("더 μž‘μ€ 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”.\n");
            }
        }
    }

    return 0;
}

μ½”λ“œ μ„€λͺ…

μœ„μ˜ 예제 μ½”λ“œλŠ” 1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 숫자λ₯Ό λ§žμΆ”λŠ” κ²Œμž„μ„ κ΅¬ν˜„ν•œ μ½”λ“œμž…λ‹ˆλ‹€.

  • target λ³€μˆ˜μ— 0λΆ€ν„° 9κΉŒμ§€μ˜ λžœλ€ν•œ 숫자λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.

  • μ‚¬μš©μžκ°€ 숫자λ₯Ό λ§žμΆ”λŠ” κ²Œμž„μ„ μ‹œμž‘ν•˜κΈ° μœ„ν•œ μ•ˆλ‚΄ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

  • while 문을 μ‚¬μš©ν•˜μ—¬ κ²Œμž„μ΄ μ§„ν–‰λ˜λŠ” λ™μ•ˆ 반볡 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

  • kbhit ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

  • getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹€μ œλ‘œ ν‚€λ³΄λ“œμ—μ„œ μž…λ ₯된 ν‚€λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.

  • μž…λ ₯된 ν‚€κ°€ 'q'인 경우, "ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³ , λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•©λ‹ˆλ‹€.

  • μž…λ ₯된 ν‚€λ₯Ό guess λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. μ΄λ•Œ, μž…λ ₯된 문자λ₯Ό 숫자둜 λ³€ν™˜ν•˜κΈ° μœ„ν•΄ '0'을 λΉΌμ€λ‹ˆλ‹€.

  • μž…λ ₯된 μˆ«μžκ°€ 1λΆ€ν„° 9κΉŒμ§€μ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚œ 경우, "잘λͺ»λœ μž…λ ₯μž…λ‹ˆλ‹€. 1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•˜μ„Έμš”."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³ , 반볡문의 λ‹€μŒ 반볡으둜 μ΄λ™ν•©λ‹ˆλ‹€.

  • μ‹œλ„ 횟수λ₯Ό μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€.

  • μž…λ ₯ν•œ μˆ«μžμ™€ target λ³€μˆ˜κ°€ λ™μΌν•œ 경우, "μ •λ‹΅μž…λ‹ˆλ‹€! μ‹œλ„ 횟수: %d"λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³ , λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•©λ‹ˆλ‹€.

  • μž…λ ₯ν•œ μˆ«μžκ°€ target λ³€μˆ˜λ³΄λ‹€ μž‘μ„ 경우, "더 큰 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

  • μž…λ ₯ν•œ μˆ«μžκ°€ target λ³€μˆ˜λ³΄λ‹€ 클 경우, "더 μž‘μ€ 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

μœ„μ˜ 예제 μ½”λ“œλŠ” getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 κ°μ§€ν•˜κ³ , μ›ν•˜λŠ” λ™μž‘μ„ μˆ˜ν–‰ν•˜λŠ” κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. μ‚¬μš©μžλŠ” κ²Œμž„μ—μ„œ 숫자λ₯Ό 맞좜 λ•ŒκΉŒμ§€ 숫자λ₯Ό μž…λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€. κ²Œμž„μ˜ λ‚œμ΄λ„λ₯Ό μ‘°μ ˆν•˜κΈ° μœ„ν•΄ λ‹€μ–‘ν•œ μš”μ†Œλ“€μ„ μΆ”κ°€ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

- getch와 kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“œλŠ” 예제 μ½”λ“œ

μ•„λž˜λŠ” getch와 kbhit ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“œλŠ” 예제 μ½”λ“œμž…λ‹ˆλ‹€.

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

int main() {
    int target = rand() % 10;  // 0 ~ 9 쀑 λžœλ€ν•œ 숫자 지정
    int count = 0;  // μ‹œλ„ 횟수

    printf("1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 ν•˜λ‚˜λ₯Ό λ§žμΆ°λ³΄μ„Έμš”.\n");

    while (1) {
        if (kbhit()) {  // ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ 확인
            char ch = getch();  // ν‚€λ³΄λ“œ μž…λ ₯을 λ³€μˆ˜μ— μ €μž₯

            if (ch == 'q') {  // λ§Œμ•½ μž…λ ₯된 ν‚€κ°€ 'q'라면
                printf("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.\n");
                break;  // λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
            }

            int guess = ch - '0';  // charλ₯Ό int둜 λ³€ν™˜ν•˜μ—¬ μΆ”μΈ‘ κ°’μœΌλ‘œ μ‚¬μš©

            if (guess < 1 || guess > 9) {  // μž…λ ₯된 μˆ«μžκ°€ λ²”μœ„λ₯Ό λ²—μ–΄λ‚œ 경우
                printf("잘λͺ»λœ μž…λ ₯μž…λ‹ˆλ‹€. 1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•˜μ„Έμš”.\n");
                continue;  // 반볡문의 λ‹€μŒ 반볡으둜 이동
            }

            count++;  // μ‹œλ„ 횟수 증가

            if (guess == target) {  // μž…λ ₯ν•œ μˆ«μžκ°€ 정닡인 경우
                printf("μ •λ‹΅μž…λ‹ˆλ‹€! μ‹œλ„ 횟수: %d\n", count);
                break;  // λ°˜λ³΅λ¬Έμ„ μ’…λ£Œ
            } else if (guess < target) {
                printf("더 큰 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”.\n");
            } else {
                printf("더 μž‘μ€ 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”.\n");
            }
        }
    }

    return 0;
}

μ½”λ“œ μ„€λͺ…

μœ„μ˜ 예제 μ½”λ“œλŠ” 1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 숫자λ₯Ό λ§žμΆ”λŠ” κ²Œμž„μ„ κ΅¬ν˜„ν•œ μ½”λ“œμž…λ‹ˆλ‹€.

  • target λ³€μˆ˜μ— 0λΆ€ν„° 9κΉŒμ§€μ˜ λžœλ€ν•œ 숫자λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.

  • μ‚¬μš©μžκ°€ 숫자λ₯Ό λ§žμΆ”λŠ” κ²Œμž„μ„ μ‹œμž‘ν•˜κΈ° μœ„ν•œ μ•ˆλ‚΄ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

  • while 문을 μ‚¬μš©ν•˜μ—¬ κ²Œμž„μ΄ μ§„ν–‰λ˜λŠ” λ™μ•ˆ 반볡 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

  • kbhit ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

  • getch ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹€μ œλ‘œ ν‚€λ³΄λ“œμ—μ„œ μž…λ ₯된 ν‚€λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.

  • μž…λ ₯된 ν‚€κ°€ 'q'인 경우, "ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³ , λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•©λ‹ˆλ‹€.

  • μž…λ ₯된 ν‚€λ₯Ό guess λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. μ΄λ•Œ, μž…λ ₯된 문자λ₯Ό 숫자둜 λ³€ν™˜ν•˜κΈ° μœ„ν•΄ '0'을 λΉΌμ€λ‹ˆλ‹€.

  • μž…λ ₯된 μˆ«μžκ°€ 1λΆ€ν„° 9κΉŒμ§€μ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚œ 경우, "잘λͺ»λœ μž…λ ₯μž…λ‹ˆλ‹€. 1λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•˜μ„Έμš”."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³ , 반볡문의 λ‹€μŒ 반볡으둜 μ΄λ™ν•©λ‹ˆλ‹€.

  • μ‹œλ„ 횟수λ₯Ό μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€.

  • μž…λ ₯ν•œ μˆ«μžμ™€ target λ³€μˆ˜κ°€ λ™μΌν•œ 경우, "μ •λ‹΅μž…λ‹ˆλ‹€! μ‹œλ„ 횟수: %d"λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³ , λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•©λ‹ˆλ‹€.

  • μž…λ ₯ν•œ μˆ«μžκ°€ target λ³€μˆ˜λ³΄λ‹€ μž‘μ„ 경우, "더 큰 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

  • μž…λ ₯ν•œ μˆ«μžκ°€ target λ³€μˆ˜λ³΄λ‹€ 클 경우, "더 μž‘μ€ 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

μœ„μ˜ 예제 μ½”λ“œλŠ” getch ν•¨μˆ˜μ™€ kbhit ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ ν‚€λ³΄λ“œ μž…λ ₯을 κ°μ§€ν•˜κ³ , μ›ν•˜λŠ” λ™μž‘μ„ μˆ˜ν–‰ν•˜λŠ” κ°„λ‹¨ν•œ ν‚€λ³΄λ“œ μž…λ ₯ κ²Œμž„μ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. μ‚¬μš©μžλŠ” κ²Œμž„μ—μ„œ 숫자λ₯Ό 맞좜 λ•ŒκΉŒμ§€ 숫자λ₯Ό μž…λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€. κ²Œμž„μ˜ λ‚œμ΄λ„λ₯Ό μ‘°μ ˆν•˜κΈ° μœ„ν•΄ λ‹€μ–‘ν•œ μš”μ†Œλ“€μ„ μΆ”κ°€ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λŒ“κΈ€