C 언어에서 화면에 데이터를 출력할 때는 printf() 함수를, 사용자로부터 입력을 받을 때는 scanf() 함수를 사용합니다. 이 두 함수는 모두 라이브러리 함수로, 표준 입출력 헤더 파일인 stdio.h에 정의되어 있습니다.
많은 초보 개발자들이 간과하는 부분 중 하나가 바로 이 함수들의 반환값입니다. 아래에서 printf()와 scanf() 함수가 어떤 값을 반환하는지 자세히 알아보겠습니다.
printf() 함수의 반환값
printf() 함수는 화면에 출력을 담당하는 함수입니다. 이 함수는 성공적으로 출력된 문자의 개수를 반환하며, 오류가 발생한 경우에는 음수(negative value)를 반환합니다.
다음 예제 프로그램을 통해 이를 직접 확인해 보겠습니다.
예제 코드
#include <stdio.h>
int main(){
char str[] = "THE SKY IS BLUE";
printf("\nThe value returned by printf() for the above string is : %d", printf("%s", str));
return 0;
}
실행 결과
THE SKY IS BLUE
The value returned by printf() for the above string is : 15
코드 설명
위 프로그램의 동작 과정을 살펴보겠습니다.
먼저 문자열 str을 초기화합니다. 그다음 printf() 함수를 호출하여 문자열을 화면에 출력하고, 동시에 printf()의 반환값까지 함께 출력합니다. 해당 코드는 다음과 같습니다.
char str[] = "THE SKY IS BLUE";
printf("\nThe value returned by printf() for the above string is : %d", printf("%s", str));
"THE SKY IS BLUE" 문자열은 공백을 포함해 총 15글자이므로, printf() 함수는 15를 반환하게 됩니다.
scanf() 함수의 반환값
scanf() 함수는 사용자로부터 입력을 받는 함수입니다. 이 함수는 성공적으로 읽어들인 입력 값의 개수를 반환하며, 입력 실패나 오류가 발생하면 EOF(파일 끝, end-of-file)를 반환합니다.
다음 예제 프로그램으로 확인해 보겠습니다.
예제 코드
#include <stdio.h>
int main(){
int x, y, z;
printf("The value returned by the scanf() function is : %d",
scanf("%d%d%d", &x, &y, &z));
printf("\nx = %d", x);
printf("\ny = %d", y);
printf("\nz = %d", z);
return 0;
}
실행 결과
7 5 4
The value returned by the scanf() function is : 3
x = 7
y = 5
z = 4
코드 설명
위 프로그램의 동작 과정을 자세히 살펴보겠습니다.
먼저 int형 변수 x, y, z 세 개를 선언합니다. 사용자가 scanf() 함수를 통해 세 변수에 값을 입력하면, scanf()는 성공적으로 읽은 값의 개수를 반환합니다. 이를 출력하는 코드는 다음과 같습니다.
int x, y, z;
printf("The value returned by the scanf() function is : %d",
scanf("%d%d%d", &x, &y, &z));
사용자가 7, 5, 4라는 세 개의 정수를 입력했으므로 scanf() 함수는 3을 반환합니다.
이후에는 입력받은 x, y, z의 값들을 차례대로 출력합니다. 해당 코드는 다음과 같습니다.
printf("\nx = %d", x);
printf("\ny = %d", y);
printf("\nz = %d", z);마무리
정리하면, printf()는 출력된 문자 수를, scanf()는 성공적으로 읽은 항목 수를 반환합니다. 이러한 반환값을 활용하면 입력값 검증이나 출력 결과 확인 등 더 견고하고 안정적인 C 프로그램을 작성하는 데 큰 도움이 됩니다.