ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (C / C++) 파일 입출력 해보기(업다운게임)
    C언어 2021. 7. 1. 10:49

    파일 입출력이란 2가지로 나누어 진다.

    • 파일에서 작업공간으로 데이터를 읽어오는 작업
    • 작업공간의 데이터를 파일에 작성하는 작업

     

    과정은 3가지가 있다.

    1. fopen() -> 파일을 연다.
    2. 오픈한 파일에 작업을 한다.
    3. fclose() -> 파일을 닫는다.
    • fopen() : 파일명과 모드를 입력 받아서 파일의 메모리 주소를 반환하는 함수
    • fscanf() : 파일로부터 입력을 받을 때 사용하는 함수
    • fprintf() : 파일에 출력하는 함수
    • fclose() : 파일을 닫는 함수
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // 파일 입출력 (읽기 모드)
     
    #include <stdio.h>
     
    void main() {
        FILE* in;
        int num;
        double d;
        char c;
        char str[10];
     
        in = fopen("input.txt""r");
     
        fscanf(in, "%d%lf %c %s"&num, &d, &c, str);
        printf("%d %lf %c %s\n", num, d, c, str);
     
        fclose(in);
    }
    cs

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // 파일 입출력 (쓰기 모드)
     
    #include <stdio.h>
     
    void main() {
     
        // 해당 파일이 없으면 만들어준다.
        // 해당 파일이 이미 있다면 덮어쓰기
        FILE* in = fopen("input.txt""r");
        FILE* out = fopen("output.txt""w");

    // 파일의 끝까지
        int n;
        while (!feof(in)) {
            fscanf(in, "%d"&n);
            fprintf(out, "%d ", n);
        }
     
        fclose(in);
        fclose(out);
        printf("수행종료\n");
     
    }
    cs

     

    - 업다운 게임을 구현해보자.

    - input.txt 안에 임의의 값을 넣어놓고 그 숫자를 맞추는 업다운 게임을 진행한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    // 파일 입출력
     
    #include <stdio.h>
     
    void main() {
        FILE* in;
        int num, ans, max = 100, min = 1;
        printf("======업다운게임!======\n");
     
        in = fopen("input.txt""r");
        fscanf(in, "%d"&ans);
     
        while (1) {
            printf("%d~%d사이의 값을 입력: ", min, max);
            scanf("%d"&num);
     
            if (min > num || max < num) {
                printf("사잇값을 입력하세요!\n");
                continue;
            }
     
            if (ans == num) {
                printf("정답!\n");
                break;
            }
            else if (ans < num) {
                printf("다운!\n");
                max = num;
            }
            else {
                printf("업!\n");
                min = num;
            }
        }
     
        fclose(in);
    }
    cs

     

Designed by Tistory.