C언어/stdio.h

[C언어] scanf 함수 (stdio.h)

아무일도없었다 2022. 7. 24. 17:13

사용범위

Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수

기능

C언어 표준 입력 함수이며 로 대부분은 콘솔(Console)로부터 내용을 입력받는다.

헤더

#include <stdio.h>

※ scanf 함수 사용시 stdio.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※


함수

int scanf(const char * restrict format, ...);
restrict
  • restrict 
    • 포인터의 메모리 접근에 관련된 최적화 기능 (C99 표준)
    • 특정 포인터가 다른 포인터와 겹치지 않는다는것을 컴파일러에게 알려줘서 최적화를 하기 위해서 사용 (모르면 사용하지 말것)

파라미터

  • format
    • 문자열 (string) 형태로 scanf 함수를 통해 입력받을 데이터의 서식을 입력한다.
    • 서식 지정자 참고
  • ...
    • C언어의 가변인자로 입력되는 파라미터의 개수를 동적일때 사용한다.
    • scanf 에서는 format에 들어가는 내용에 맞춰서 파라미터를 입력해야한다.
    • 변수에 할당받기 위해서는 반드시 변수의 주소값을 입력해야 한다.  ( & 사용 )

반환값

  • scanf 로 입력받는 파라미터의 개수가 int 타입의 숫자로 반환한다.
#include <stdio.h>

int main() {
    int a,b,c;
    int ret;
    
    ret = scanf("%d %d %d", &a, &b, &c);
    printf("ret: %d\n", ret);
    
    return 0;
}

※ 위의 코드 실행시 ret 값은 입력받는 파라미터의 개수인 3이 나옵니다.

 

&

scanf 를 통해 입력받는 시점에서 몇몇 변수앞에 & 를 붙이는데 이는 해당 변수의 주소값을 전달한다.

변수의 주소값을 전달하는 이유는 scanf 를 통해 입력받은 값을 변수의 주소를 통해 받기위해서다.

간단한 예시를 들면 택배를 받기 위해서 배송받을 주소지를 입력하는것과 같은 원리이다.

 

반응형

'C언어 > stdio.h' 카테고리의 다른 글

[C언어] fclose 함수 (stdio.h)  (0) 2022.08.02
[C언어] fopen 함수 (stdio.h)  (1) 2022.08.01
[C언어] fputs 함수 (stdio.h)  (0) 2022.07.28
[C언어] fgets 함수 (stdio.h)  (0) 2022.07.26
[C언어] printf 함수 (stdio.h)  (0) 2022.07.24