Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 printf()와 scanf() 함수의 반환값 완벽 이해하기

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 프로그램을 작성하는 데 큰 도움이 됩니다.