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

C 언어 scanf()와 fscanf() 함수 완벽 가이드 – 문법, 예제, 차이점


scanf() 함수란?

C 언어에서 scanf() 함수는 stdin(표준 입력)으로부터 형식화된 입력을 읽어 들이는 데 사용됩니다. 이 함수는 성공적으로 읽어 들인 항목의 개수를 반환하며, 입력 처리에 실패하면 음수 값(EOF)을 반환합니다.

C 언어에서 scanf() 함수의 기본 문법은 다음과 같습니다.

int scanf(const char *characters_set)

다음은 C 언어에서 scanf() 함수를 사용하는 예제입니다.

예제 코드

#include <stdio.h>
int main () {
    char s[20];
    printf("Enter a string : ");
    scanf("%s", s);
    printf("\nEntered string : %s\n", s);
    return(0);
}

실행 결과

Enter a string : Peter!
Entered string : Peter!

위 예제에서 사용자가 문자열을 입력하면 scanf()가 %s 서식 지정자를 통해 해당 문자열을 배열 s에 저장하고, 그대로 화면에 출력하는 것을 확인할 수 있습니다.

fscanf() 함수란?

fscanf() 함수는 지정된 스트림(파일 등)으로부터 형식화된 입력을 읽어 들이는 데 사용됩니다. 입력에 실패하면 0을 반환하고, 성공하면 읽어 들인 값을 반환합니다.

C 언어에서 fscanf() 함수의 기본 문법은 다음과 같습니다.

int fscanf(FILE *stream_name, const char *set_of_characters)

다음은 C 언어에서 fscanf() 함수를 사용하는 예제입니다.

예제 코드

#include <stdio.h>
#include <stdlib.h>
int main () {
    char str1[10];
    int year;
    FILE * fp;
    fp = fopen ("file.txt", "w+");
    fputs("This is demo text!", fp);
    rewind(fp);
    fscanf(fp, "%s", str1);
    printf("First word = \n%s\n", str1 );
    fclose(fp);
    return(0);
}

실행 결과

First word =
This

위 예제에서는 먼저 file.txt 파일을 쓰기 모드(w+)로 연 뒤 문자열을 저장하고, rewind() 함수로 파일 포인터를 처음 위치로 되돌린 후 fscanf()로 첫 번째 단어만 읽어 출력합니다.

scanf()와 fscanf()의 주요 차이점

두 함수 모두 형식화된 입력을 읽는다는 점에서 유사하지만, 다음과 같은 차이가 있습니다.

scanf() : 표준 입력(stdin), 즉 사용자의 키보드 입력을 읽습니다.
fscanf() : fopen()으로 연 파일 등 지정된 입력 스트림에서 데이터를 읽습니다.