티스토리 뷰

C

문자 입력 받기

parkrams 2024. 1. 11. 17:11
728x90

변수 사이즈

Name Size Range*
char 1byte signed: -128 to 127 unsigned : 0 to 255
short int (short) 2bytes signed: -32,768 to 32,767 unsigned: 0 to 65,535
int 4bytes signed: -2,147,483,648 to 2,147,483,647 unsigned: 0 to 4,294,967,295
long int (long) 4bytes signed: -2,147,483,648 to 2,147,483,647 unsigned: 0 to 4,294,967,295
bool 1byte true or false
float 4bytes +/- 3.4e +/- 38 ( ~ 7 digits )
double 8bytes +/- 1.7e +/- 308 ( ~ 15 digits )
long double 8bytes +/- 1.7e +/- 308 ( ~ 15 digits )

scanf, printf

  • scanf와 printf를 가리켜 입출력 함수라고 한다.
    • scanf는 반드시 변수랑 똑같은 수식 지정자로 입력 받아야 한다.
    short sh; // 정수
    printf("short 형 변수 입력 : ");
    scnaf("%hd", &sh);
  • c에서만 사용 가능한 형식 지정자
    • 형식 지정자에서 h 는 짧음을 의미 즉 hd = 짧은 정수
위 코드로 scanf_s 로 입력을 받으려고 할 때 문자가 입력 안 되고 바로 다음 코드로 넘어가는 현상이 있다.


    printf("char 형 변수 입력 : ");
    scanf_s("%c", &ch, 1);

    printf("short 형 변수 입력 : ");
    scanf_s("%hd", &sh);

이 코드에서  char를 무시하고 바로 short 변수를 입력 받는다 

이유는 위에 코드에서 사용한  \n(개행) 때문이다.

char 에 입력을 받아야 하는게 개행으로 인해 enter 를 입력 받게 되면서 나타나는 문제 

scanf_s(" %c", &ch, 1);  이 코드처럼 %c 앞에 공백을 주면 남겨진 공백을 무시하기 때문에 \n 이 공백으로 
무시 되고 정상적으로 입력 받을 수 있다.
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함