프로그래밍 언어/C언어

C언어 기초이론 (scanf 함수)

chobyeonggyu03 2024. 6. 13. 14:31

scanf 함수란?

scan function 의 약자 (스캔함수)

-키보드로 부터 문자열을 스캔하여 데이터를 읽어내는 함수

-데이터를 스캔후 입력받은 데이터를 지정된 공간에 저장하는 원리

​-printf함수와 같은 표준함수임 (visual studio에선 예외)

scanf함수 사용방법

1) 표준함수를 사용하기 위해 헤더파일 선언해주기

ex) #include <stdio.h> // 헤더파일 선언

2) visual studio로 코드 작성시 생기는오류방지를 위하여 #define _CRT_SECURE_NO_WARNINGS 코드를 헤더파일보다도 위에 선언해주기

ex) #define _CRT_SECURE_NO_WARNINGS // 버려지는 반환값이 있어도 무시해도 괜찮다는 코드

2) scanf(" %d(입력형식) ", &function(저장함수)); 를 입력

ex) scanf(" %d %d", &num1, &num2 );

/*
제목: scanf함수를 익숙해 예제
날짜: 2024.02.18
*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    int num1, num2, num3;
    int result;

    printf("정수 2개 입력: ");
    scanf("%d %d", &num1, &num2); // num1에 정수 입력받기

    printf("정수 1개 입력: ");
    scanf("%d", &num3); // num2에 정수 입력받기

    result = num1 + num2 + num3;
    printf("%d + %d + %d = %d", num1, num2, num3, result);

    return 0;
}

 

 

**scanf함수 사용시 주의사항**

1) visual studio로 코드작성시 코드상으로는 문제가 없는데 C4996 또는 C6031이라는 에러로 컴파일러가 실행되지 않는 경우가 있는데, 이는 visual studio 작업환경에서 scanf를 포함한 여러 표준함수들을 보안에 취약하다는 이유로 막아뒀기 때문이다. 따라서 이 오류를 해결하고 싶다면 보안상의 이유로 에러를 더이상 내지 않도록 #define _CRT_SECURE_NO_WARNINGS 코드를 헤더파일보다도 위인 최상단에 선언해주면 된다.

2) scanf 함수 선언시 저장공간에 변수를 선언할 때에는 반드신 앞에 &를 붙여줘야함 (이유는 나중에 이해할 수 있다고 하심)