본문 바로가기
2학년 2학기/c언어

12-6장 형식화된 입출력(fscanf, fprintf)

by kkkkk1023 2024. 11. 18.

fscanf

: 파일에 있는 데이터를 원하는 형식으로 입력 받는 방법

 

 

score.txt파일이 있다고 했을 때 텍스트 파일에서 데이터를 정해진 형식으로 읽어오자.

 

score.txt

유재석 80 90 75
이광수 59 90 87
송지효 86 45 90

 

 

#include <stdio.h>

int main()
{
    FILE* fp = NULL;
    cahr name[20];
    int kor, eng, mat;
    
    double avg;

    fp = fopen("score.txt", "r");
    if (fp == NULL) {
        fprintf(stderr, "원본 파일 score.txt를 열 수 없습니다.\n");
        exit(1);
    }

    //파일로부터 입력 받기
    fscanf(fp, "%s %d %d %d, name, &kor, &eng, &mat);
    
    avg = kor + eng + mat / 3.0;
    
    printf("%s %d %d %d %lf", name, kor, eng, mat, avg);
    // 출력
    // 유재석 80 90 75 81.666666
    
    fclose(fp);
    return 0;
}

 


 

fprintf

: 파일에 데이터를 입력할 때 원하는 형식으로 입력 하는 방법

 

person.txt파일에 데이터를 입려할 때, 원하는 형식으로 데이터를 입력해보자.

#include <stdio.h>

int main() {
    FILE *fp = fopen("person.txt", "w"); // 파일 열기 (쓰기 모드)
    if (fp == NULL) {
        printf("파일을 열 수 없습니다.\n");
        return 1;
    }

    int age = 25;
    char name[] = "Alice";

    // fprintf를 사용하여 파일에 데이터 쓰기
    fprintf(fp, "이름: %s, 나이: %d\n", name, age);

    fclose(fp); // 파일 닫기
    return 0;
}

 

person.text

이름: Alice, 나이: 25

 

 

이때 정수도 아스키코드로 저장되기 때문에, 2는 50으로 즉, 0 0 1 1 0 0 1 0으로 저장되고, 5는 53으로 즉, 0 0 1 1 0 1 0 1으로 저장된다.