1. 파일 개방과 입출력을 하기 위해선 파일 포인터가 필요하다. FILE = *fp
2. ex) fopen("a.txt", "r"); //읽기 전용으로 개방
3. 함수 원형 FILE *fopen(const char *, const char *);
=> 반환형 함수명 매개변수
4. 절대 경로 : "..\\source\\b.txt"
상대 경로 : "data\\a.txt"
5.
파일이 존재할 때 | 파일이 없을 때 | |
r | 읽기 위해 개방 | NULL 반환 |
w | 지우고 쓰기 위해 개방 | 새로운 파일 생성 |
a | 파일 끝에 추가하기 위해 개방 | 새로운 파일 생성 |
(*append : 덧붙이다)
- Stream File
장점 : 1) 입출력 효율 증가. 장치로부터 독립성 증가. => 스트림파일이 없으면 외부 입출력 장치가 바뀔 때마다 함수를 수정해야 한다.
2) 프로그램과 장치의 입출력 속도차이 감소. => 하드디스크의 동작 속도는 프로그램 데이터 처리속도보다 훨씬 느리다.
=> 스트림파일의 버퍼에 출력 테이터를 모아 한꺼번에 장치로 보내면, 장치가 데이터를 기록하는 동안 프로그램이 다시 버퍼를 채울 수 있다.
- fgetc : 문자 입력함수 - 파일로부터 한 문자를 입력하여 반환한다.
- 위치 지시자 : 파일 개방시 '0'으로 초기화, 입력 함수가 데이터 읽을 때 그 크기만큼 증가
- fgetc가 마지막 여섯번째 반환 시 EOF를 반환한다.
(=> 파일 크기와 현재까지 읽어들인 데이터의 크기를 비교하여 판단 후, EOF를 반환한다.)
- fputc : 문자 출력함수 -> 문자가 저장된 txt 파일이 생성된다. (fopen시 write로 파일 생성 후, 문자 쓰기)
- 기본적으로 개방되는 표준 입출력 스트림파일 - (scanf, printf, getchar, putchar, gets, puts 같은 함수들이 사용)
Stream File 명 |
용도 |
연결된 입출력 장치 |
stdin |
표준 입력 스트림 |
키보드 |
stdout |
표준 출력 스트림 |
모니터 |
stderr |
표준 에러 스트림 |
모니터 |
- 운영체제가 기본적으로 개방
- 버퍼에 저장했다가 EOF뜨면 한 번에 보내는 형식.
- 파일의 기록방식
텍스트(Text) |
바이너리(Binary) |
|
저장방식 |
아스키 코드로 저장 |
그 외 |
확인방법 |
메모장에서 확인 |
해당 기록 방식을 적용한 별도의 프로그램으로 확인 |
파일 개방 시 모드 표시 방법 |
rt, wt, at |
rb, wb, ab |
- 파일 개방시 알맞은 모드에 알맞게 표시 - 별도로 비 표시 시 rt, wt, at가 default |
파일의 형태와 개방 모드가 다르면 문제가 생김
- fseek 하면 stream 파일의 버퍼 데이터를 하드디스크로 옮기고, 위치 지시자를 시작 위치(0)로 옮겨준다.
- fseek(fp, 0, SEEK_SET) == rewind(fp); //와 동일
- 파일로부터 데이터를 읽다가 중간에 다시 출력할 경우 사용한다
- fgets, fputs 와 gets, puts의 차이.
gets는 편하지만 입력할 저장공간 크기를 인수로 주지않아 메모리 공간을 침범할 수 있다. 또한, puts는 항상 줄을 바꾸므로 문자열을 이어서 출력할 수 없다. - 따라서 저장공간 크기를 인수로 정해주는 fgets와 fputs가 안전하고 정확하다.
- fscanf, fprintf는 scanf, printf와 달리 파일을 지정해서 수행한다.
6. 분할 컴파일 과정 시각화
* 개인적인 학습 목적으로 작성한 글이기에 내용에 잘못된 정보가 있을 수 있습니다.
'임베디드 개발(before) > IoT 임베디드 SW 개발자 양성과정' 카테고리의 다른 글
[12일차] 임베디드 시스템 아키텍쳐-개발환경, 아키텍쳐 (0) | 2020.07.28 |
---|---|
[11일차] 임베디드 시스템의 이해 (0) | 2020.07.27 |
[9일차] C언어 교육-(함수 포인터, 동적 할당 메모리, 구조체 등) (1) | 2020.07.23 |
[8일차] C언어 교육8-(포인터 배열, 배열 포인터, 함수 포인터) (1) | 2020.07.22 |
내가 보려고 정리해둔 C언어 (0) | 2020.07.21 |