C언어/C언어 예제

[C언어 소스] fscanf 함수 사용 예제

언제나휴일 2016. 5. 3. 02:11
반응형

[C언어 소스] fscanf 함수 사용 예제


//C언어 표준 라이브러리 함수 사용법 가이드

//int  fscanf (FILE * fp ,const char *format,...); 파일 스트림에 포멧을 지정하여 읽는 함수

//회원 정보를 파일에 쓴 후에 다시 읽어와서 출력

#pragma warning(disable:4996)

#include <stdio.h>

 

#define MAX_MEMBERS     10

#define MAX_NAME_LEN    20

 

//회원 구조체 정의

typedef struct {

    char name[MAX_NAME_LEN + 1];

    int age;

}Member;

 

int main(void)

{

    FILE * fp;

    int i;

    //원본 회원 배열

    Member members[MAX_MEMBERS] =

    {

        { "홍길동",20 },{ "강감찬",15 },{ "을지문덕",22 },{ "이순신",19 },{ "김구",30 },

        { "안중근",30 },{ "박찬호",35 },{ "김연아",17 },{ "아이유",20 },{ "주니엘",20 }

    };

 

    //읽어올 회원 배열

    Member members2[MAX_MEMBERS];

 

    //쓰기 모드로 파일 열기

    fopen_s(&fp, "data.txt", "w");

    if (fp == NULL)

    {

        perror("error fopen");

        return;

    }

 

    //전체 회원 정보를 파일에 쓰기

    for (i = 0; i<MAX_MEMBERS; i++)

    {

        fprintf(fp, "%-10s %-10d\n", members[i].name, members[i].age);

    }

    fclose(fp);//파일 스트림닫기

 

               //읽기 모드로 파일 열기

    fopen_s(&fp, "data.txt", "r");

    if (fp == NULL)

    {

        perror("error fopen");

        return;

    }

 

    //장식을 위한 출력

    printf("%-10s %-10s\n", "이름", "나이");

    //입력 파일 스트림에서 포멧에 맞게 회원 정보 읽어온 후에 출력 반복

    for (i = 0; i<MAX_MEMBERS; i++)

    {

        fscanf(fp, "%s %d\n", members2[i].name, &members2[i].age);

        printf("%-10s %-10d\n", members2[i].name, members2[i].age);

    }

    fclose(fp);//파일 스트림 닫기

    return 0;

}

 

출력

이름      나이

홍길동    20

강감찬    15

을지문덕  22

이순신    19

김구      30

안중근    30

박찬호    35

김연아    17

아이유    20

주니엘    20

 

새로 만들어진 data.txt 내용

홍길동    20

강감찬    15

을지문덕  22

이순신    19

김구      30

안중근    30

박찬호    35

김연아    17

아이유    20

주니엘    20


언제나 휴일 티스토리 바로가기

언제나 휴일 유튜브 채널 바로가기

반응형