ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C/C++] scanf
    기초/C,C++ 2017. 2. 15. 10:30

    프로그램은 나만 사용하기 위해서 만들수도 있지만

    보통의 사용목적은 "배포"의 목적을 가지고있습니다.

    따라서 사용자의 입력을 받는 상황이 발생할 수 있는데요.

    그때 C에서는 scanf라는 명령어를 사용합니다.

     

    scanf

    scanf사용시 " " 큰따옴표안에 서식문자(%(알파벳))을 제외한 나머지를 입력하시면 그 나머지도 입력을 해야 다음 줄로 넘어갑니다.

    따라서 중요한 이유가 아니라면 scanf사용시 큰따옴표안에는 서식문자를 제외한 문자를 입력하지 않는것을 권장해드려요.

     

    #double 타입의 서식문자 [%lf] 사용 하기!

     

    에러 발생

    실수를 입력받을때 double로 사용하는 것을 권장해드려요.

    float타입은 소수점이하 6자리 밖에 표현되지 않는데

    double값의 입력이 들어오는 경우 error가 발생합니다.

    따라서 scanf를 실수값을 받을 때 사용시

    scanf("%lf");

     

    [사용법]

    scanf("%받을타입",&변수);

     

    문자열을 입력 받을 경우 기호 (&)를 사용하지 않아요!

    why? 문자열은 변수의 이름이 곧 공간의 주소를 의미하므로,

    &를 쓰지 않도록 합니다!

     

    [알맞은 사용법]

     

     

    printf("받을타입",변수);

    와 달리 scanf에서 기호(&)를 붙여주는 이유는 값이 아닌 주소를 가져오기 떄문입니다.

     

     

    변수에는 주소와 값이 있는데요

    변수 num1은 임의의 주소를 배정받고 그곳에 값이 들어가게 되는겁니다.

     

    주소와 값에 대한건 리턴타입이나 포인터타입 포스팅때 자세하게 포스팅하겠습니다.

     

     scanf 에러

    문자룰 scanf를 통해서 입력받으면 [ENTER]도 같이 들어오기 때문에

    다음번에 scanf에서 enter를 입력받았다고 생각하고

    다음 scanf를 통해 문자를 입력받는 과정이 [ENTER]로 들어가게 됩니다.

    따라서 scanf를 동시에 여러번 사용하실경우 버퍼를 비워주셔야 합니다.

    입력버퍼를 비울 때는 getchar(); 함수를 사용해서 비워줍니다.

     

     

     

    '기초 > C,C++' 카테고리의 다른 글

    [C/C++] 반복문  (0) 2017.02.20
    [C/C++] 조건문  (0) 2017.02.16
    [C/C++] 형변환  (0) 2017.02.15
    [C/C++] C언어 키워드  (0) 2017.02.15
    [C/C++] 사칙연산, 연산자  (0) 2017.02.14

    댓글

Designed by Tistory.