c 언어/c 언어 문법

C 프로그램 입/출력 및 파일 입출력

임베디드 친구 2024. 12. 12. 15:31
728x90
반응형

C 프로그램 입/출력 및 파일 입출력

C 프로그래밍에서 데이터의 입출력은 프로그램이 사용자와 상호 작용하거나 데이터를 처리하는 데 필수적인 요소입니다. 본 포스팅에서는 scanfprintf를 이용한 기본적인 콘솔 입출력과 파일 입출력을 다룹니다. 또한 각 주제별로 예제를 포함하여 쉽게 이해할 수 있도록 설명하겠습니다.


1. 콘솔 입출력: scanfprintf

printf: 출력 함수

printf는 텍스트와 변수 값을 화면에 출력하는 함수입니다. printf 함수의 형식은 다음과 같습니다:

#include <stdio.h>

int main() {
    printf("문자열 출력\n");
    return 0;
}

서식 지정자

  • %d: 정수
  • %f: 부동 소수점
  • %c: 단일 문자
  • %s: 문자열

예제 1: 다양한 데이터 출력

#include <stdio.h>

int main() {
    int num = 10;
    float pi = 3.14;
    char ch = 'A';
    char str[] = "Hello, World!";

    printf("정수: %d\n", num);
    printf("부동 소수점: %.2f\n", pi);
    printf("문자: %c\n", ch);
    printf("문자열: %s\n", str);

    return 0;
}

결과

정수: 10
부동 소수점: 3.14
문자: A
문자열: Hello, World!

scanf: 입력 함수

scanf는 사용자로부터 데이터를 입력받는 함수입니다. scanf는 입력받을 데이터의 형식과 저장할 변수의 주소를 필요로 합니다.

기본 문법

scanf("형식", &변수);

주의: &는 변수의 메모리 주소를 나타내며, 문자열(%s) 입력 시에는 제외합니다.

예제 2: 사용자 입력 받기

#include <stdio.h>

int main() {
    int age;
    float height;

    printf("나이를 입력하세요: ");
    scanf("%d", &age);

    printf("키를 입력하세요 (cm): ");
    scanf("%f", &height);

    printf("당신의 나이는 %d세이고, 키는 %.1fcm입니다.\n", age, height);

    return 0;
}

실행 결과

나이를 입력하세요: 25
키를 입력하세요 (cm): 175.5
당신의 나이는 25세이고, 키는 175.5cm입니다.

2. 파일 입출력

C에서 파일 입출력은 데이터를 저장하고 읽는 데 사용됩니다. 이를 통해 프로그램 실행 간 데이터를 유지할 수 있습니다.

파일 열기

파일을 사용하려면 먼저 파일을 열어야 합니다. C에서는 fopen 함수를 사용합니다.

FILE *fp;
fp = fopen("파일명", "모드");

파일 모드

  • r: 읽기 모드
  • w: 쓰기 모드 (기존 내용 삭제)
  • a: 추가 모드 (기존 내용 유지)

파일 쓰기

fprintf 또는 fputc/fputs를 사용해 파일에 데이터를 기록할 수 있습니다.

예제 3: 파일에 데이터 쓰기

#include <stdio.h>

int main() {
    FILE *fp;

    fp = fopen("example.txt", "w");
    if (fp == NULL) {
        printf("파일 열기 실패\n");
        return 1;
    }

    fprintf(fp, "이것은 파일 출력 예제입니다.\n");
    fputs("Hello, File!\n", fp);

    fclose(fp);

    printf("파일 작성 완료\n");
    return 0;
}

파일 읽기

fscanf, fgetc/fgets를 사용하여 파일에서 데이터를 읽습니다.

예제 4: 파일에서 데이터 읽기

#include <stdio.h>

int main() {
    FILE *fp;
    char buffer[100];

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

    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
        printf("읽은 내용: %s", buffer);
    }

    fclose(fp);
    return 0;
}

실행 결과

읽은 내용: 이것은 파일 출력 예제입니다.
읽은 내용: Hello, File!

3. 파일 입출력 실습: 간단한 메모장 프로그램

예제 5: 메모 저장 및 읽기 프로그램

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

void saveNote();
void readNote();

int main() {
    int choice;

    do {
        printf("\n1. 메모 저장\n2. 메모 읽기\n0. 종료\n선택: ");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                saveNote();
                break;
            case 2:
                readNote();
                break;
            case 0:
                printf("프로그램 종료\n");
                break;
            default:
                printf("잘못된 입력\n");
        }
    } while (choice != 0);

    return 0;
}

void saveNote() {
    FILE *fp;
    char note[100];

    fp = fopen("note.txt", "a");
    if (fp == NULL) {
        printf("파일 열기 실패\n");
        return;
    }

    printf("메모를 입력하세요: ");
    getchar();  // 버퍼 비우기
    fgets(note, sizeof(note), stdin);

    fputs(note, fp);
    fclose(fp);
    printf("메모 저장 완료\n");
}

void readNote() {
    FILE *fp;
    char buffer[100];

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

    printf("\n저장된 메모:\n");
    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
        printf("%s", buffer);
    }

    fclose(fp);
}

마무리

이번 포스팅에서는 C 프로그래밍에서 콘솔 입출력과 파일 입출력을 다루었습니다. 이를 통해 데이터 입력과 저장, 출력 과정을 이해할 수 있습니다. 위의 예제를 직접 실행하며 연습하면 큰 도움이 될 것입니다.

728x90
반응형

'c 언어 > c 언어 문법' 카테고리의 다른 글

C 언어 조건문과 반복문  (0) 2024.12.13
C 언어의 연산자  (0) 2024.12.12
C 언어 데이터 타입과 변수  (0) 2024.12.12
C 프로그램 기본 구조와 `main` 함수  (0) 2024.12.12
C 언어 소개  (0) 2024.12.12