Skip to content

Commit 9ca53ff

Browse files
committed
docs: C 프로그래밍 11
- 파일 입출력 개념 및 함수 설명 추가
1 parent 6056e94 commit 9ca53ff

File tree

1 file changed

+106
-0
lines changed
  • docs/C프로그래밍-활용

1 file changed

+106
-0
lines changed

docs/C프로그래밍-활용/11.md

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
sidebar_position: 11
3+
title: 파일 입출력
4+
description: 입출력을 위한 다양한 함수와 포맷, 파일 입출력의 개념과 방법을 설명합니다.
5+
---
6+
7+
## 1. 표준 입출력 (Standard I/O)
8+
9+
C 프로그래밍에서 입출력은 **스트림(stream)** 개념을 통해 처리됩니다.
10+
11+
- **스트림(Stream)**: 바이트의 흐름. 입력/출력 데이터를 임시로 저장하는 **버퍼** 포함
12+
- **표준 스트림 종류**
13+
- `stdin`: 표준 입력(키보드)
14+
- `stdout`: 표준 출력(모니터)
15+
- `stderr`: 표준 에러 출력(모니터)
16+
17+
**예시 코드:**
18+
19+
```c
20+
#include <stdio.h>
21+
22+
fscanf(stdin, "%d", &num); // 표준 입력
23+
fprintf(stdout, "%d", num); // 표준 출력
24+
fprintf(stderr, "error!\n"); // 표준 에러 출력
25+
```
26+
27+
---
28+
29+
## 2. 입출력 함수 (I/O Functions)
30+
31+
표준 입출력 및 파일 입출력에 사용되는 다양한 함수가 있습니다.
32+
33+
- **문자 입출력**
34+
- `getchar()`: 한 문자 입력
35+
- `putchar()`: 한 문자 출력
36+
- **문자열 입출력**
37+
- `gets_s()`(권장) 또는 `gets()`: 문자열 입력
38+
- `puts()`: 문자열 출력
39+
- **형식화된 입출력**
40+
- `scanf()`: 형식 지정자 사용 입력
41+
- `%[ijk]`: i, j, k로만 이루어진 문자열 입력
42+
- `%[^ijk]`: i, j, k를 제외한 문자열 입력
43+
- `printf()`: 형식 지정자 사용 출력
44+
- 예: `printf("%+10.2f\n", fn);` (`+`: 플래그, `10`: 필드 폭, `2`: 정밀도, `%f`: 형식)
45+
46+
> **참고:** scanf는 변수의 주소를 전달해야 하며, 배열은 이름 자체가 포인터입니다.
47+
48+
---
49+
50+
## 3. 파일 입출력 (File I/O)
51+
52+
프로그램이 영구적으로 데이터를 저장/불러올 수 있도록 하는 기능입니다.
53+
54+
### 3.1 파일의 종류
55+
56+
- **텍스트 파일**: 사람이 읽을 수 있는 아스키 코드로 저장 (예: 소스 파일, 메모장)
57+
- **2진 파일**: 2진 데이터로 저장, 사람이 읽기 어려움 (예: 실행 파일, 이미지)
58+
59+
### 3.2 파일 입출력 과정
60+
61+
1. **파일 포인터 정의**: `FILE *f;`
62+
2. **파일 열기**: `f = fopen("1.txt", "w");`
63+
3. **작업 수행**: 읽기/쓰기 등
64+
4. **파일 닫기**: `fclose(f);`
65+
66+
### 3.3 파일 모드 (File Modes)
67+
68+
- **텍스트 파일 모드**
69+
- `"r"`: 읽기 (파일 없으면 에러)
70+
- `"w"`: 쓰기 (새 파일 생성, 기존 파일 덮어씀)
71+
- `"a"`: 추가 (파일 끝에 데이터 추가)
72+
- `"r+", "w+", "a+"`: 읽기/쓰기/추가 모드
73+
- `"t"`: 텍스트 파일 모드(생략 가능)
74+
- **2진 파일 모드**
75+
- `"rb"`, `"wb"`, `"ab"`, `"rb+"`, `"wb+"`
76+
77+
### 3.4 파일 입출력 함수
78+
79+
- **문자 입출력**
80+
- `fgetc(f)`: 파일에서 문자 읽기
81+
- `fputc(문자, f)`: 파일에 문자 쓰기
82+
- **문자열 입출력**
83+
- `fgets(buffer, size, f)`: 파일에서 문자열 읽기
84+
- `fputs(buffer, f)`: 파일에 문자열 쓰기
85+
- **형식화된 입출력**
86+
- `fscanf(f, "%d%f", &i, &fi)`: 파일에서 데이터 읽기
87+
- `fprintf(f, "%d%f", i, fi)`: 파일에 데이터 쓰기
88+
- `fprintf(stderr, "error in file : %s\n", f)`: 에러 출력
89+
- **2진 파일 입출력**
90+
- `fread(buffer, sizeof(int), 10, f)`: 파일에서 10개 int 읽기
91+
- `fwrite(buffer, sizeof(int), 10, f)`: 10개 int 파일에 쓰기
92+
93+
### 3.5 버퍼 관리 (Buffer Management)
94+
95+
- `fflush(fp)`: 버퍼 내용을 즉시 디스크에 저장 (일부 IDE 지원)
96+
- `setbuf(fp, NULL)`: 버퍼 직접 지정/제거 (일부 IDE 지원)
97+
98+
---
99+
100+
## 결론
101+
102+
C 프로그래밍의 파일 입출력은 **스트림** 개념을 기반으로 하며,<br/ >
103+
표준 입출력(키보드/모니터)과 파일 입출력(디스크)로 나뉩니다.
104+
105+
각 방식은 문자, 문자열, 형식화 데이터, 2진 데이터 처리를 위한 다양한 함수를 제공합니다.
106+
파일 입출력 시 파일을 특정 모드로 열고, 작업 후 반드시 닫아야 하며, 이를 통해 외부 데이터와 효과적으로 상호작용할 수 있습니다.

0 commit comments

Comments
 (0)