산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 파일 입출력 마스터: 파일 생성, 열기, 읽기, 쓰기, 닫기 완전 정복

C 파일 관리 개요

C에서 표준 라이브러리 stdio.h는 디스크의 영구 데이터 작업을 위한 포괄적인 함수 세트를 제공합니다. 이 도구들을 마스터하면 데이터 무결성과 프로그램 안정성을 보장하면서 파일을 안정적으로 생성, 읽기, 쓰기, 닫을 수 있습니다.

주요 파일 처리 함수

함수목적
fopen()기존 파일 열기 또는 새 파일 생성
fclose()열린 파일 닫기 및 리소스 해제
fprintf()파일에 포맷된 텍스트 쓰기
fscanf()파일에서 포맷된 데이터 읽기
getc()파일에서 단일 문자 읽기
putc()파일에 단일 문자 쓰기
fgets()한 줄 전체를 버퍼로 읽기
fputs()포맷 없이 문자열을 파일에 쓰기
fseek()파일 포인터를 지정된 위치로 이동
ftell()현재 파일 포인터 위치 조회
rewind()파일 포인터를 처음으로 리셋

파일 모드 설명

모드설명
"r"읽기 전용으로 열기; 파일 없으면 실패
"w"쓰기 전용으로 열기; 기존 파일 잘라내기 또는 새 파일 생성
"a"추가 모드로 열기; 쓰기는 파일 끝에 추가
"r+"읽기/쓰기 위해 처음부터 열기
"w+"읽기/쓰기 위해 열기; 기존 파일 잘라내기
"a+"읽기/쓰기 위해 열기; 새 데이터 추가

파일 생성

파일 생성 또는 열기를 위해 먼저 파일 포인터를 선언한 후 원하는 파일명과 모드로 fopen() 호출:

FILE *fp;
fp = fopen("data.txt", "w");

파일이 없으면 fopen()이 생성합니다. 이미 존재하면 모드에 따라 내용 보존 또는 덮어쓰기 결정.

절대 경로 지정도 가능:

fp = fopen("D:/data.txt", "w");

파일 생성 단계 이미지:

C 파일 입출력 마스터: 파일 생성, 열기, 읽기, 쓰기, 닫기 완전 정복

C 파일 입출력 마스터: 파일 생성, 열기, 읽기, 쓰기, 닫기 완전 정복

파일 닫기

모든 파일 작업 완료 후 반드시 fclose()를 호출하여 파일 디스크립터 해제와 버퍼 플러시:

fp = fopen("data.txt", "r");
...
fclose(fp);

성공 시 0, 에러 시 EOF 반환. 프로그램이 종료될 때 OS가 자동으로 파일을 닫지만, 명시적 닫기는 모범 사례입니다.

파일 쓰기

쓰기 시 필요한 곳에 줄바꿈 문자(\n)를 명시적으로 추가해야 합니다. 주요 쓰기 함수:

예제: fputc()

#include <stdio.h>
int main() {
    int i;
    FILE *fptr;
    const char *str = "Guru99 Rocks\n";
    fptr = fopen("fputc_test.txt", "w");
    for (i = 0; str[i] != '\n'; i++) {
        fputc(str[i], fptr);
    }
    fclose(fptr);
    return 0;
}

출력 파일 fputc_test.txt 내용:

C 파일 입출력 마스터: 파일 생성, 열기, 읽기, 쓰기, 닫기 완전 정복

예제: fputs()

#include <stdio.h>
int main() {
    FILE *fp = fopen("fputs_test.txt", "w+");
    fputs("This is Guru99 Tutorial on fputs,", fp);
    fputs("We don't need to use for loop\n", fp);
    fputs("Easier than fputc function\n", fp);
    fclose(fp);
    return 0;
}

결과 파일 fputs_test.txt:

C 파일 입출력 마스터: 파일 생성, 열기, 읽기, 쓰기, 닫기 완전 정복

예제: fprintf()

#include <stdio.h>
int main() {
    FILE *fptr = fopen("fprintf_test.txt", "w");
    fprintf(fptr, "Learning C with Guru99\n");
    fclose(fptr);
    return 0;
}

결과 파일 fprintf_test.txt:

C 파일 입출력 마스터: 파일 생성, 열기, 읽기, 쓰기, 닫기 완전 정복

파일 읽기

데이터 읽기의 세 가지 주요 함수:

아래는 fprintf_test.txt를 세 가지 방법 모두로 읽는 완전한 시연:

#include <stdio.h>
int main() {
    FILE *fp;
    char buffer[50], c;
    fp = fopen("fprintf_test.txt", "r");
    printf("----read a line----\n");
    fgets(buffer, 50, fp);
    printf("%s\n", buffer);
    fclose(fp);
    fp = fopen("fprintf_test.txt", "r");
    printf("----read and parse data----\n");
    char str1[10], str2[2], str3[20], str4[2];
    fscanf(fp, "%s %s %s %s", str1, str2, str3, str4);
    printf("Read String1 |%s|\n", str1);
    printf("Read String2 |%s|\n", str2);
    printf("Read String3 |%s|\n", str3);
    printf("Read String4 |%s|\n", str4);
    fclose(fp);
    fp = fopen("fprintf_test.txt", "r");
    printf("----read the entire file----\n");
    while ((c = fgetc(fp)) != EOF) {
        putchar(c);
    }
    fclose(fp);
    return 0;
}

프로그램 출력:

----read a line----
Learning C with Guru99
----read and parse data----
Read String1 |Learning|
Read String2 |C|
Read String3 |with|
Read String4 |Guru99|
----read the entire file----
Learning C with Guru99

C 파일 입출력 마스터: 파일 생성, 열기, 읽기, 쓰기, 닫기 완전 정복

getc와 putc를 이용한 문자 단위 대화형 입출력

이 최소 예제는 사용자 입력을 읽고 파일에 쓴 후 다시 읽어오는 것을 보여줍니다:

#include <stdio.h>
int main() {
    FILE *fp;
    int c;
    printf("File Handling\n");
    fp = fopen("demo.txt", "w");
    while ((c = getchar()) != EOF) {
        putc(c, fp);
    }
    fclose(fp);
    printf("Data Entered:\n");
    fp = fopen("demo.txt", "r");
    while ((c = fgetc(fp)) != EOF) {
        putchar(c);
    }
    fclose(fp);
    return 0;
}

실행 예:

C 파일 입출력 마스터: 파일 생성, 열기, 읽기, 쓰기, 닫기 완전 정복

C 파일 입출력 마스터: 파일 생성, 열기, 읽기, 쓰기, 닫기 완전 정복

핵심 정리

C 언어

  1. C# 변수와 기본 데이터 타입 완벽 가이드
  2. C 입출력(I/O) 마스터: scanf()와 printf() 완전 정복
  3. C 파일 입출력: fopen, fprintf, fread, fseek 마스터하기
  4. Python 파일 입출력: 파일 연산, 읽기, 쓰기, 관리 마스터하기
  5. Apacer, 글로벌 고성능 플래시 카드 CV110-SD & CV110-MSD 출시
  6. Apacer, 560MB/s 읽기·520MB/s 쓰기 SV250 산업용 SSD 출시
  7. 아씨드(acceed) EDAM-4200 시리즈: 확장 가능하고 신뢰성 높은 데이터 통신을 위한 통합 I/O 모듈
  8. 라즈베리 파이 I/O 브레이크아웃 케이블 & 플러그보드 어댑터 제작 - 단계별 가이드
  9. C 파일 입출력 완벽 가이드: 열기, 읽기, 쓰기, 위치 제어, 바이너리 처리
  10. C 헤더 파일 이해: 유형, 사용법, 모범 사례