printf와 scanf

1 minute read

printfscanf는 string 형태로 format을 정하고 형식 지정자로 값을 대입하거나 입력받을 수 있도록 만든 표준 입출력 함수

표준 라이브러리 함수

  • #include <stdio.h>처럼 #include로 미리 작성된 프로그램을 불러옴
  • .h, .c, .txt 모두 사용할 수 있고 #include로 불러온 위치에 해당 내용이 실행됨
  • < >" "로 불러올 수 있는데, < >는 표준 라이브러리에서 파일을 찾고, " "는 먼저 작업 폴더에서 찾고 없다면 표준 라이브러리에서 찾음

printf

  • C의 표준 출력 함수
  • printf("출력할 서식", 변수1,..., 변수n) 형태로 사용할 수 있고 출력할 서식에 형식 지정자(format specifier)를 포함시켜 변수를 함께 출력할 수 있음
  • 변수를 하나도 포함시키지 않고 출력할 수도 있고 서로 다른 type의 값을 출력할 수 있음
  • 위의 예시에서 printf 출력 서식에 %가 형식 지정자의 자리임을 나타내고 데이터 타입에 따라 다른 형태를 가짐. 맨 아래 표 참고

scanf

  • C의 표준 입력
  • scanf("입력 받을 서식", 변수1의 주소, ..., 변수n의 주소)
  • scanf에 값을 입력할 때, 변수명이 아니라 &로 변수의 주소를 전달

  • scanf가 window에서 보안 문제가 있어 scan_f를 사용하라는 경고가 나올 수 있음 (scanfscanf_s의 용법이 다름)
    • #pragma warning (disable:4996) or #define _CRT_SECURE_NO_WARNINGS를 가장 위에 입력해주면 경고 무시하게 됨
  • format만 적절히 설정해주면 한 번에 여러 개의 입력을 받을 수 있음
  • 입력되어야 할 값보다 더 많이 입력 받을 경우 버퍼에 데이터가 남아 문제가 발생하기 때문에 더 많은 입력을 받아선 안됨.

    Format specifier Data type
    %d 10진 정수형
    %o 8진 정수형
    %x 16진 정수형
    %u unsigned 10진수
    %f 실수형
    %lf double 타입 실수형
    %c 문자
    %s 문자열