1. printf 함수

printf는 C언어의 표준출력함수 이다. 표준 입출력함수는 stdio.h 헤더에 있으며 printf를 소스코드내에서 호출하기위해 전처리기 명령으로 stdio.h 헤더를 포함시켜야 한다.

printf는 print Formatting의 약자로, 서식화된 출력을 한다.

printf 함수의 호출법

 printf(“서식문자열”,매개변수,매개변수..);

printf 함수의 첫번째인수 서식문자열 안의 서식문자를 매개변수 순서에 따라 조립하는 방식으로 출력한다. 만약 서식문자열 내에 서식문자가 없을경우, 인수를 생략 할 수 있다.

​서식문자의 종류는 아래와 같으며, 항상 %를 붙인다.

ex) printf(“성적 총점은 %d 이며, 평균은 %f점 입니다.”, totalScore, avrScore);

서식문자 %뒤에 정렬 지정도 가능하다.

– %[정렬][폭지정][(실수형).소수점폭지정][타입지정]서식문자

– 정렬

– 폭지정

– 소수점폭지정

– 타입지정

2. scanf 함수

scanf 함수는 C언어의 표준입력 함수이다. printf와 마찬가지로 형식화된 서식으로 입력받을 내용을 조립한다. 키보드에서 표준입력을 거처서 값을 입력받을수 있다. scanf함수를 호출하기 위해서는 소스코드에 stdio.h 헤더를 포함하여야 한다.

scanf함수의 형식은 printf와 거의 동일하며, printf는 %lf, %ld 가아닌 %d, %f로 하여도 상관없으나, scanf에서는 반드시 타입에 맞게 입력받아야 한다. 또한 scanf함수의 매개변수는 반드시 메모리주소를 넘겨야 하는데, scanf함수는 키보드에 입력된 내용을 우리가 원하는 변수에 저장하는데, 호출시 scanf함수는 다른지역의 변수들의 주소를 모르기 때문에 주소를 넘겨주어야 값을 변경시킬수 있기 때문이다.

– scanf 함수 호출방법

 scanf(“서식문자열”,&매개변수);

-> &연산자는 해당변수의 주소값을 결과로 반환하는 1항 연산자이다.

ex) scanf(“%d”,&inputNum); 

– scanf 함수 주의사항

scanf는 반드시 메모리의 주소 (포인터변수, 혹은 변수의 주소)를 통하여 매개변수를 전달해야 하며, scanf의 서식문자열에서 매개변수간 입력 구분은 공백문자로 구별한다. 공백문자는 띄어쓰기,개행,탭,문자 모두 공백문자이며 따라서 문자열 입력시 띄어쓰기나 탭은 입력받을수 없다. 입력의 끝은 엔터로 처리된다.

최근 컴파일러는 보안성이 강화된 scanf_s 함수를 권하고 있다. scanf_s는 문자와 문자열을 입력 받을 때에만 매개변수 끝에 받을 데이터의 크기를 추가로 넘겨주기만 하면된다. 이렇게 사용함으로서 너무큰 입력이 들어와 생기는 오류를 방지 할수 있다.

ex) char name[20]; 

      scanf_s(“%s”,name ,20);