| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- #코드트리 #코딩테스트 #코테공부 #백트래킹 #알고리즘 기초
- C
- 운영체제
- 데이터베이스
- 인접 행렬
- til
- 99클럽
- 코딩테스트
- 오블완
- 1일1코테
- 티스토리챌린지
- 프로그래밍 언어
- 파이썬
- 코드트리
- 코테공부
- 자바스크립트
- 자바
- 개발자취업
- 항해99
- 프로그래머스
- 플로이드-워셜
- 자료구조
- 개발자루틴
- 코딩테스트준비
- 연결 리스트
- 갭체크
- 웹
- Java
- 알고리즘
- 코딩테스트사이트추천
- Today
- Total
와드의 블로그
19. 파일 입출력 본문
(1) 표준 입출력 라이브러리
* 표준 입출력 라이브러리란?
컴퓨터의 주기억 장치인 램은 컴퓨터의 전원이 켜져 있을 때만 데이터를 유지할 수 있다. 따라서 운영체제는 컴퓨터가 꺼져도 데이터를 유지할 수 있는 보조기억 장치를 사용한다. 보조기억 장치에서 데이터를 읽고 쓰는 것은 운영체제마다 다르기 때문에 C언어는 표준 입출력 라이브러리를 제공한다. 이 라이브러리를 사용하면 보조기억 장치에 파일 단위로 데이터를 저장하거나 읽을 수 있다.
(2) 파일 열기와 닫기
* 파일 입출력 함수의 도우미 FILE 구조체
표준 입출력 라이브러리는 FILE 구조체로 포인터 변수를 선언하고 파일 입출력 함수를 호출할 때마다 이 변수를 넘겨주도록 만들어져 있다. FILE 구조체는 사용하려는 디스크 상의 파일이 어떤 상태로 사용 중인지에 대한 정보를 담고 있으며, 파일을 좀 더 편하게 사용할 수 있도록 도와준다.
* 파일 열기
파일 열기를 할 때는 사용할 파일 이름과 파일을 어떤 형식으로 사용할 것인지를 먼저 결정하고 fopen함수를 사용한다. 파일을 성공적으로 열면 FILE* 형식의 메모리 주소 값을 반환하고 파일이 존재하지 않거나 파일 형식을 잘못 사용해서 파일 열기에 실패하면 NULL값을 반환한다.
* 파일 사용 형식 알아보기
파일 사용 형식이란 파일을 어떻게 사용할 것인지 지정하는 형식을 말한다.
- "r": 파일 내용 읽기 모드
- "w": 파일 내용 쓰기 모드
- "a": 파일에 데이터 이어 쓰기 모드
* 파일 닫기
fopen 함수를 사용하여 파일을 열어서 사용하다가 사용이 끝나면 fclose 함수를 사용하여 파일을 닫아야 한다. 만약 파일을 열어 놓고 파일을 닫지 않으면 파일의 내용이 지워지거나 파일을 사용할 수 없는 상태가 될 수 있으니 주의해야 한다.
(3) 텍스트 파일에 데이터 읽고 쓰기
* 텍스트 파일에 문자열 저장하기
텍스트 파일에 데이터를 쓸 때에는 fprintf 함수를 사용한다. FILE 구조체 변수의 포인터를 인자로 갖는 것을 제외하면 사용방법은 printf와 비슷하다.
#include <stdio.h>
int main()
{
FILE* f = fopen("text.txt", "w");
if (f != NULL) {
fprintf(f, "Hello\n");
fclose(f);
}
return 0;
}
* 텍스트 파일에서 문자열 읽기
텍스트 파일에서 문자열을 읽을 때는 fscanf 함수를 사용한다. 역시 scanf와 비슷하다.
#include <stdio.h>
int main()
{
FILE* f = fopen("text.txt", "r");
char str[10];
if (f != NULL) {
fscanf(f, "%s", str);
fclose(f);
printf("%s\n", str);
}
return 0;
}
* 텍스트 파일에서 한 줄 단위로 문자열 읽기
fscanf 함수는 문자열 사이에 공백이 있기 때문에 한 줄 단위로 입력 받지 못하고 단어 단위로 파일에서 읽어온다. 따라서 텍스트 파일에서 한 줄 단위로 문자열을 처리하고 싶은 경우에 fgets 함수를 사용한다.
#include <stdio.h>
int main()
{
FILE* f = fopen("text.txt", "r");
char str[10];
if (f != NULL) {
fgets(str, sizeof(str), f);
fclose(f);
printf("%s", str);
}
return 0;
}
참조자료: C언어 입문
'프로그래밍 언어 > C' 카테고리의 다른 글
| 20. 함수 포인터 (0) | 2021.09.18 |
|---|---|
| 18. 구조체 (0) | 2021.09.17 |
| 17. 다차원 포인터 (0) | 2021.09.17 |
| 16. 메모리 할당 (0) | 2021.09.17 |
| 15. 배열과 포인터 (0) | 2021.09.17 |