궁금증 연구소

안녕하세요. 궁금증연구소입니다.

오늘 포스팅 주제는 "c언어 버퍼 비우기 (%*c)"입니다.

 

#include <stdio.h>

int main(void){
    // FILE *fp = stdin;

    int Age = 0;
    printf("나이를 입력:");
    scanf("%d%*c", &Age);

    char Name[12] ={0};
    printf("이름을 입력:");
    gets(Name);

    printf("%d%s", Age, Name);

    
}

C언어에서 scanf 함수는 개행 문자를 같이 저장합니다. 따라서, scanf 함수 이후에 gets() 같은 함수를 쓰게 되면 버퍼에 남아있는 개행 문자가 scanf 값으로 들어가서 새로운 값을 못 받게 됩니다.

이럴 때 보통 ffluash(stdin)을 통해 버퍼를 비워버리는 방법을 쓰는데요.

 

위와 같이 %*c라고 scanf의 형식을 지정해두면, 개행 문자를 간편하게 없앨 수 있습니다.

의미는 문자를 하나 받되 그 값을 무시한다. 정도로 생각하면 됩니다.

 

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading