일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 렌즈
- 프로그래머스 lv2
- Patch Cleaner
- camera
- Digital Slow Shutter
- 조건 제어문
- ASCCII
- c언어
- Gain
- CS Mount
- 아이리스
- image sensor
- 카메라
- AppInventer
- C Mount
- 이미지센서
- 실생활알고리즘
- 변수
- 무게선별자동화
- 저조도
- Zoom Lense
- 간단한 앱만들어보기
- main 함수 인자 전달
- 변수의 초기화와 대입
- 저장소와 동적메모리
- 고정비트레이트
- Pixel Bit Format
- 과초점거리
- 심도
- Depth of Fileld
- Today
- Total
카메라 개발자 공부방(SW)
[23장] 파일 입출력 본문
오늘은 파일 입출력에 대해 공부해보겠습니다.
파일 입출력은 메모리에 데이터를 직접 쓰는 방식이 아니라, '스트림'을 활용해서 데이터를 입출력합니다.
여기서 스트림이란
1) 순서가 지켜지는 데이터의 흐름
2) 바이트의 흐름을 의미합니다.
이 스트림을 이용하면 입출력 장치뿐만 아니라 DataBase, Network와 Application과 간에 '공통된 인터페이스'로 활용할 수 있습니다. 스트림이 없다면 Application과 Network의 입출력 연동된 코드를 만들어 놔도 다른 DataBase 시스템과 연동을 할 때는 새로운 코드를 작성해야 되는 수고가 늘어납니다.
스트림을 활용한다면, 이러한 고민을 전혀 할 필요 없습니다~!
C언어에서 말하는 스트림은
1) 바이트의 흐름을 나타내는 논리적인 단위
2) 입출력 장치 간의 인터페이스를 의미합니다.
파일 입출력을 사용할 땐 다음의 함수를 사용합니다
fopen(fileName, mode);
fopen의 첫 번째 인자는 읽을 or 생성할 파일의 이름입니다.
fopen의 두 번째 인자는 파일 입출력 동작을 어떻게 할지에 대한 mode입니다.
mode | 설명 |
r(read) |
파일을 읽기 전용으로 엽니다. (파일이 반드시 있어야합니다.) |
w(write) | 파일을 쓰기 전용으로 엽니다. 파일이 없으면 새로 생성합니다. |
a(append) | 파일이 있으면 파일의 끝에 내용을 덧붙입니다. 파일이 없으면 새로 생성합니다. |
b(binary) | 문자열이 아닌 binary 파일을 직접 열 때 사용됩니다. |
r+ | 파일을 읽고 쓰는 모드입니다 (파일이 반드시 있어야합니다.) |
w+ | 파일을 읽고 쓰는 모드입니다. |
a+ | 파일을 읽고 갱신하기 위한 모드입니다. |
#include <stdio.h>
int main()
{
FILE* inf = fopen("hello.txt", "w");
fputs("hello world\n", inf);
fclose(inf);
return 0;
}
// 실행결과
// 작업 디렉터리 경로에 hello.txt가 생기고, hello world가 저장되어있습니다.
fputs 함수의 첫 번째 인자는 저장할 문자열, 두 번 째인자는 파일 포인터를 의미합니다.
#include <stdio.h>
int main()
{
FILE* inf = fopen("MyAge.txt", "r");
fprintf(inf, "my age is %d\n", 33);
fclose(inf);
return 0;
}
// 실행결과
// 작업 디렉터리 경로에 MyAge.txt가 생기고, 'my age is 33'이 저장되어있습니다.
기존의 콘솔 i/O인 printf와 동일하게 사용되는 것을 알 수 있죠?
스트림을 활용하기 때문에 동일한 인터페이스를 사용할 수 있어서 가능하답니다~
#include <stdio.h>
int main()
{
FILE* inf = fopen("hello.txt", "w");
char buf[128] = {};
fgets(buf, 128, inf);
printf("%sn", buf);
fclose(inf);
return 0;
}
// 실행결과
// hello world
fgets 함수의 첫 번째 인자는 저장받을 메모리 주소
두 번 째인자는 최대로 받을 파일크기
세 번 째인자는 파일 포인터입니다.
#include <stdio.h>
int main()
{
FILE* inf = fopen("MyAge.txt", "r");
char buf[128] = {};
fscanf(inf, "my age is %d", buf);
printf("%sn", buf);
fclose(inf);
return 0;
}
// 실행결과
// my age is 33
fscanf 함수의 첫 번째 인자는 파일 포인터
두 번 째인자는 파일을 읽어드릴 문자열 형식,
세 번 째인자는 파일 포인터입니다.
fscanf을 통해 파일을 한번 읽을 때마다 문자열 형식만큼 읽어드린다고 생각하시면 됩니다.
오늘은 파일 입출력에 대해 공부해봤습니다!
'Langauge > C' 카테고리의 다른 글
[26장] 가변인자 (0) | 2021.10.17 |
---|---|
[24장] const (0) | 2021.10.13 |
[22장] 재귀함수 (0) | 2021.10.11 |
[21장] 함수 포인터 (0) | 2021.10.10 |
[20장] void 포인터 (0) | 2021.10.09 |