파일 입출력
1. 표준 입출력 (Standard I/O)
C 프로그래밍에서 입출력은 스트림(stream) 개념을 통해 처리됩니다.
- 스트림(Stream): 바이트의 흐름. 입력/출력 데이터를 임시로 저장하는 버퍼 포함
- 표준 스트림 종류
stdin: 표준 입력(키보드)stdout: 표준 출력(모니터)stderr: 표준 에러 출력(모니터)
예시 코드:
#include <stdio.h>
fscanf(stdin, "%d", &num); // 표준 입력
fprintf(stdout, "%d", num); // 표준 출력
fprintf(stderr, "error!\n"); // 표준 에러 출력
2. 입출력 함수 (I/O Functions)
표준 입출력 및 파일 입출력에 사용되는 다양한 함수가 있습니다.
- 문자 입출력
getchar(): 한 문자 입력putchar(): 한 문자 출력
- 문자열 입출력
gets_s()(권장) 또는gets(): 문자열 입력puts(): 문자열 출력
- 형식화된 입출력
scanf(): 형식 지정자 사용 입력%[ijk]: i, j, k로만 이루어진 문자열 입력%[^ijk]: i, j, k를 제외한 문자열 입력
printf(): 형식 지정자 사용 출력- 예:
printf("%+10.2f\n", fn);(+: 플래그,10: 필드 폭,2: 정밀도,%f: 형식)
- 예:
참고: scanf는 변수의 주소를 전달해야 하며, 배열은 이름 자체가 포인터입니다.
3. 파일 입출력 (File I/O)
프로그램이 영구적으로 데이터를 저장/불러올 수 있도록 하는 기능입니다.
3.1 파일의 종류
- 텍스트 파일: 사람이 읽을 수 있는 아스키 코드로 저장 (예: 소스 파일, 메모장)
- 2진 파일: 2진 데이터로 저장, 사람이 읽기 어려움 (예: 실행 파일, 이미지)
3.2 파일 입출력 과정
- 파일 포인터 정의:
FILE *f; - 파일 열기:
f = fopen("1.txt", "w"); - 작업 수행: 읽기/쓰기 등
- 파일 닫기:
fclose(f);
3.3 파일 모드 (File Modes)
- 텍스트 파일 모드
"r": 읽기 (파일 없으면 에러)"w": 쓰기 (새 파일 생성, 기존 파일 덮어씀)"a": 추가 (파일 끝에 데이터 추가)"r+", "w+", "a+": 읽기/쓰기/추가 모드"t": 텍스트 파일 모드(생략 가능)
- 2진 파일 모드
"rb","wb","ab","rb+","wb+"