파일 입출력 코드 설명 부탁드립니다. (fread, fwrite)

조회수 777회

파일 입출력을 처음 공부중입니다만,

리눅스에서 쓸때에는 실행명령어에 파일 이름도 추가해야 하더라고요

그래서 main의 argv, argc를 활용하는건 알겠는데

이 코드가 순차적으로 어떤일을 하는지 이해가 잘 안갑니다

이해가 가면 활용을 할 수 있을 것 같은데

도와주신다면 감사하겠습니다.

예제의 student.h는 아마도 구조체가 선언되어있는곳 같습니다.

fread 예제

#include <stdio.h>
#include "student.h"

int main(int argc, char **argv)
{
    struct student record;
    FILE *fp;

    if (argc !=2)
    {
        fprintf(stderr,"Usage: %s filename\n", argv[0]);
        return 1;
    }

    if ( (fp = fopen(argv[1], "rb")) == NULL)
    {
        fprintf(stderr, "Error: Cannot open the file %s\n", argv[1]);
        return 2;
    }


    printf("-------------------------------------\n");
    printf("%s\t %7s\t %6s\n", "Sno", "Sname", "Sgrade");
    printf("-------------------------------------\n");

    while (fread(&record, sizeof(record), 1, fp) > 0)
    {
        if (record.id !=0)
        printf("%d\t %s\t %lf\n", record.id, record.name, record.score);
    }

    printf("\n");
    printf("-------------------------------------\n");
    return 0;
}

fwrite 예제

#include <stdio.h>
#include <stdlib.h>
#include "student.h"

int main(int argc, char **argv)
{
    struct student record;
    FILE *fp;

    if (argc !=2) {
        fprintf(stderr,"Usage: %s filename\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    fp = fopen(argv[1], "wb");
    printf("%s %7s %6s\n", "Sno", "Sname", "Sgrade");
    while (scanf("%d %s %lf", &record.id, record.name, &record.score) == 3) {
        fwrite(&record, sizeof(record), 1, fp);
    }
    fclose(fp);
    return 0;
}

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)