티스토리 뷰
1. 개요
fopen과 open의 차이점을 알고 파일입출력을 해본다.
2. 규격화된 파일 입출력
- 원형 함수 : int fscanf( FILE *stream, const char *format [, argument].. );
- 리턴값 : 읽혀진 필드의 수. 파일 끝 또는 에러 시 EOF(-1).
- 데이터 역시 규격화 되어 있어야 한다. 안 그러면 에러
- 출력은 fsacnf 대신 fprintf를 이용한다.
- fprintf를는 기본 printf에 파라메터 FILE pointer를 추가한 것이다. 사용법도 printf와 같다.
- 선별적 읽기(%*?)를 하여 데이터를 읽지 않고 줄수를 체크할 수 있다.
- 기본예제
3. fopen과 open
- open에는 규겨화된 데이터 파일입출력을 하지 못한다. -> fprintf와 fscanf가 없고 바이나리로 저장 및 읽을 수 있다.
- fopen은 File pointer를 리턴값으로 하고 fwrite시 파일이 없어면 생성해준다.
- open은 int가 리턴값이고 해당 리턴값은 파일의 파일테이블 번호라고 생각하면 된다. 그래서 write시 파일이 없으면 에러가 난다.
- 자료형에 데이터를 쓰거나 읽을 때 해당 자료형의 주소를 파라메터로 넣는다.
fopen | open | ||||
---|---|---|---|---|---|
|
|
4. fseek & lseek
- 읽고 있는 위치(File Location)를 변경하는 함수이다.
- fseek(FILE* filep ointer, long Offset, int Origin);
- lseek(int file, long Offset, int Origin);
- 파라메타 앞에서부터 읽은 파일, 기준 점으로 부터 이동 거리, 기준점이다.
- Origin에는 SEEK_SET(맨 앞), SEEK_END(맨 끝), SEEK_CUR(현재 점)이 있다.
5. 응용 예제
- 규격화된 data.txt를 읽고 binary 파일인 result.bin으로 저장 후, 다시 binary 파일인 result.bin 읽고 seek 함수를 이용하며 원하는 k번째 데이터를 읽어본다. 추가로 k'번째 부터 n개의 데이터를 한번에 읽어도 본다.
- 프로젝트 파일 및 입력 파일 : 파일입출력.zip data.txt
'SoftWare > C & C++' 카테고리의 다른 글
[C 언어] Console Progress Bar 만들기 - 윈도우 용 (1) | 2017.03.23 |
---|---|
C++ 변수 타입 + limits.h & stdint.h (0) | 2016.05.01 |
[C언어] 구조체 포인터 배열(Array of struct with pointer) (2) | 2016.03.29 |
[C언어]String.h - strcpy(문자열 복사), strcmp(문자열 비교), strcat(문자열 결합) (0) | 2016.03.29 |
[C언어]Separate Compilation & 헤더 사용 (0) | 2016.03.24 |
- Total
- Today
- Yesterday
- php
- 인텐트
- java
- 알고리즘
- 5582
- Java Decompiler
- Res
- 아두이노
- jad
- Service
- 유전
- java url
- vim 설치
- Notification
- 유전 알고리즘
- 파일입출력
- 포켓몬 고
- c언어
- 파일 입출력
- LISTVIEW
- vim
- 카운터
- 테라펀딩 #투게더펀딩 #P2P투자 #부동산 소액 투자 #카카오 #토스
- counter
- 안드로이드
- android
- 서버
- java 파일 입출력
- 자바 입출력
- 포켓몬 Go
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |