EP.5 파일 입출력

EP.5 파일 입출력: 데이터의 영속성과 기록의 기술 | 제어 엔지니어 구조 분석

Phase 5: Data Persistence & File I/O

EP.5 파일 입출력 — 기록과 소환의 메커니즘

프로그램이 종료되어도 사라지지 않는 "영구적 데이터" 제어 공정

1. 데이터 영속성(Persistence)의 필요성

지금까지 우리가 다룬 변수와 구조체는 프로그램이 꺼지면 메모리(RAM)에서 증발합니다. 하지만 실제 현장의 제어 시스템은 가동 로그를 남기거나 설정값을 유지해야 합니다. 파일 입출력은 하드디스크라는 영구 저장소에 데이터를 각인하여 정전이나 종료 시에도 데이터를 보존하는 유일한 수단입니다.

📍 파일 제어의 3단계 표준 공정
  • Open (열기): fopen을 통해 파일이라는 창고 문을 엽니다. (읽기 'r' 혹은 쓰기 'w' 모드 결정)
  • Process (작업): fprintf(쓰기)나 fgets(읽기)를 통해 데이터를 주고받습니다.
  • Close (닫기): fclose로 자원을 반납하고 창고 문을 확실히 잠급니다.

2. ⚡ 실습 1: 데이터 기록 (Write 모드)

모터의 최종 가동 상태를 motor_log.txt 파일에 박아넣는 공정입니다.

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() {     FILE *fp = fopen("motor_log.txt", "w"); // 쓰기 모드 열기     if (fp == NULL) return 1;     fprintf(fp, "Conveyor_01|1300|35.5\n"); // 파일에 기록     fclose(fp); // 공정 마감     printf("기록 완료.\n");     return 0; }

▲ 실습 결과

3. ⚡ 실습 2: 데이터 소환 (Read 모드)

저장된 파일에서 한 줄씩 읽어와 화면에 뿌려주는 복구 공정입니다.

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() {     FILE *fp = fopen("motor_log.txt", "r"); // 읽기 모드 열기     char buffer[100];     if (fp == NULL) return 1;     printf("=== [저장된 데이터 소환] ===\n");     while (fgets(buffer, sizeof(buffer), fp) != NULL) {         printf("%s", buffer);     }     fclose(fp);     return 0; }

▲ 실습 결과

🛠️ 마스터의 시운전 메모

파일 포인터(FILE*) 역시 우리가 배운 포인터의 일종입니다. 메모리가 아닌 파일을 가리키는 특수 리모컨이죠. 특히 fclose를 누락하면 데이터가 유실될 수 있으니, "열었으면 반드시 닫는다"는 전원 관리 원칙을 철저히 지키십시오.

© 2026 ZIN PARK · MASTERING CONTROL ENGINEERING SERIES
"기록되지 않은 데이터는 존재하지 않는 것과 같다. 이제 당신의 프로그램은 기억을 가졌다."

댓글

이 블로그의 인기 게시물

EP.0 코딩의 첫걸음 — 전기를 어떻게 연결할 것인가?

EP.0-1 천공카드

EP.1-1트랜지스터