본문 바로가기
C_language

c언어 파일 입출력: 내 컴퓨터에 글자를 저장하고 불러오기

by 헬로제이콥 2024. 8. 27.

 

 

 

 

컴퓨터에 편지를 쓰고 읽는 상상을 해 봐요!

우리가 친구에게 편지를 쓰고, 다시 읽는 것처럼 컴퓨터도 파일이라는 곳에 글자를 저장하고 다시 읽을 수 있어요. 이것을 파일 입출력이라고 해요.

파일을 열고 닫는 방법

컴퓨터에서 파일을 열고 닫는 것은 서랍을 열고 닫는 것과 비슷해요.

  • 파일 열기: 컴퓨터에 있는 파일이라는 서랍을 열어서 글을 쓰거나 읽을 준비를 하는 거예요.
  • 파일 닫기: 사용을 마친 파일 서랍을 닫아서 다른 사람이 실수로 내용을 바꾸지 못하게 하는 거예요.
#include <stdio.h>

int main() {
    FILE *fs; // 파일 서랍을 가리키는 손가락

    // 파일 서랍 열기 (쓰기 모드)
    fs = fopen("New.txt", "w");
    if (fs == NULL) {
        printf("파일 열기 실패!\n");
        return 1;
    }
     // 파일에 "Hello, World!" 쓰기
     fprintf(fs, "Hello, World!\n");
     
    // 파일 서랍 닫기
    fclose(fs);

    return 0;
}

파일 읽기

파일에서 글자를 읽어오는 것은 책에서 글자를 읽는 것과 같아요.

#include <stdio.h>

int main() {
    FILE *fs;
    char ch;

    fs = fopen("New.txt", "r");
    if (fs == NULL) {
        printf("파일 열기 실패!\n");
        return 1;
    }

    fscanf(fs, "%c", &ch); // 파일에서 한 글자 읽어서 문자 변수에 저장
    printf("읽은 글자: %c\n", 문자);

    fclose(fs);

    return 0;
}

더 많은 것들

  • 다른 종류의 파일: 그림, 음악 파일도 컴퓨터에서는 파일로 저장돼요.
  • 더 많은 명령: 파일에서 여러 줄을 읽거나, 숫자를 저장하고 불러오는 등 더 많은 것을 할 수 있어요.

 

중요한 것!

  • 파일을 열고 닫는 것을 잊지 마세요: 파일 서랍을 열고 닫는 것을 잊으면 안 돼요!
  • 파일 이름을 잘못 쓰면 안 돼요: 파일 이름을 잘못 쓰면 원하는 파일을 찾을 수 없어요.

 

 

실전예제

C 언어로 파일을 읽고 쓰는 메뉴를 제공하는 간단한 프로그램입니다. 사용자는 메뉴에서 선택하여 파일에 내용을 추가하거나, 파일의 내용을 읽을 수 있습니다.

C 프로그램 코드

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LINE 1024  //한 줄에 읽을 수 있는 최대 문자 수

int main()
{
    char filename[100];
    char line[MAX_LINE];
    int choice;
    
   while(1){
        printf("--- 메 뉴----  \n");
        printf("1. 새파일 만들 \n");
        printf("2. 읽어오기    \n");
        printf("3. 종료        \n");
        printf("-------------  \n");
        printf("선택하세요:");
        scanf("%d", &choice);
        
       switch (choice){
           case 1:
                printf("새 파일 이름: ");
                scanf("%s", filename);
                FILE *fp = fopen(filename, "w");
                if (fp == NULL) {
                    printf("파일 생성 실패\n");
                } else {
                    fprintf(fp, "Hello, World!\n"); 
                    printf("새 파일 생성 완료\n");
                    fclose(fp);
                }
               
               break;
           case 2:
               printf("읽을 파일 이름: ");
               scanf("%s", filename);
               fp = fopen(filename, "r");
                if (fp == NULL) {
                    printf("파일 읽기 실패\n");
                } else {
                    while (fgets(line, MAX_LINE, fp) != NULL) {
                        printf("%s", line);
                    }
                    fclose(fp);
                }
               break;
           case 3:
               printf("프로그램 종료\n");
               return 0;
           default:
             printf("잘못된 선택입니다.\n");
       }     
        
   }    

  return 0;
}

프로그램 설명

  1. 메뉴 제공: 사용자가 선택할 수 있는 메뉴를 제공합니다.
    • 1번: 파일에 내용을 추가합니다.
    • 2번: 파일의 내용을 읽습니다.
    • 3번: 프로그램을 종료합니다.
  2. 파일에 내용 추가:
    • writeToFile() 함수에서 파일을 추가 모드("a")로 열고, 사용자가 입력한 내용을 파일에 추가합니다. "종료"라는 단어를 입력하면 내용을 추가하는 과정을 종료합니다.
  3. 파일 내용 읽기:
    • readFromFile() 함수에서 파일을 읽기 모드("r")로 열고, 파일의 내용을 한 줄씩 읽어서 출력합니다.
  4. 입력 처리:
    • getchar()를 사용하여 입력 버퍼를 비워줍니다. 이는 scanf() 다음에 발생할 수 있는 버퍼 문제를 방지합니다

 

사용 방법

  1. 프로그램을 컴파일하고 실행합니다.
  2. 메뉴에서 원하는 옵션을 선택합니다.
  3. 내용을 추가하고 싶다면 1번을 선택하고, 종료하려면 "종료"를 입력합니다.
  4. 파일의 내용을 보고 싶으면 2번을 선택합니다.
  5. 프로그램을 종료하고 싶으면 3번을 선택합니다.

이 프로그램을 통해 간단한 파일 입출력을 실습할 수 있습니다. 

C 언어로 자판기 프로그램
   -프로그램은 사용자가 음료수를 선택하고, 가격을 계산하여 잔돈을 반환하는 기능을 포함합니다.

#include <stdio.h>

int main()
{
    int choice;
    char cho[20];
    
    int money, change, price;
    printf("=== 자판기 ===    \n");
    printf("1. 콜라 - 1000원  \n");
    printf("2. 사이다 - 1200원\n");
    printf("3. 커피 - 1500원  \n");
    printf("4. 종료           \n");
    printf("음료수를 선택하세요 (1-4): ");
    scanf("%d", &choice);
    
    printf("금액을 입력하세요: ");
    scanf(" %d", &money);
    
    switch(choice){
        case 1:
          price = money - 1000;
          strcpy(cho, "콜라");
          break;
        case 2:
          price = money - 1200;  
          strcpy(cho, "사이다");
          break;
        case 3:
          price = money - 1500;    
          strcpy(cho, "커피");;
          break;
        case 4:  
          printf("프로그램을 종료합니다.\n");
          return 0;
        default:
          printf("메뉴에 없습니다.\n");
          break;
    }
    
        printf("선택한 음료수: %s\n", cho);
        printf("잔돈: %d원\n", price);
        printf("구매해 주셔서 감사합니다!\n");
    

    return 0;
}

 

C 언어로 간단한 계산기 프로그램
   - 이 프로그램은 기본적인 사칙연산(덧셈, 뺄셈, 곱셈, 나눗셈)을 수행합니다.

#include <stdio.h>

int main() {
    char operator;
    double num1, num2, result;

    printf("계산기를 시작합니다.\n");
    printf("첫 번째 숫자를 입력하세요: ");
    scanf("%lf", &num1);

    printf("연산자를 입력하세요 (+, -, *, /): ");
    scanf(" %c", &operator);  // 공백을 넣어 이전 입력의 개행 문자를 무시

    printf("두 번째 숫자를 입력하세요: ");
    scanf("%lf", &num2);

    switch (operator) {
        case '+':
            result = num1 + num2;
            printf("%.2lf + %.2lf = %.2lf\n", num1, num2, result);
            break;
        case '-':
            result = num1 - num2;
            printf("%.2lf - %.2lf = %.2lf\n", num1, num2, result);
            break;
        case '*':
            result = num1 * num2;
            printf("%.2lf * %.2lf = %.2lf\n", num1, num2, result);
            break;
        case '/':
            if (num2 != 0) {
                result = num1 / num2;
                printf("%.2lf / %.2lf = %.2lf\n", num1, num2, result);
            } else {
                printf("오류: 0으로 나눌 수 없습니다.\n");
            }
            break;
        default:
            printf("오류: 잘못된 연산자입니다.\n");
            break;
    }

    return 0;
}