관리 메뉴

ComputerVision Jack

[C프로그래밍 Chapter18] 본문

Programming Language/C Programming

[C프로그래밍 Chapter18]

JackYoon 2020. 2. 11. 11:13
반응형

[파일 입출력]

파일 스트림

프로그램에서 파일에 접근하기 위하여 프로그램과 파일 사이에 스트림이라는 연결 고리가 있어야한다.

따라서 스트림이 형성되었다는 것은 파일로 부터 데이터를 읽어들일 준비가 완료되었다는 의미이다.

 

fopen함수

스트림을 형성할 때, 호출하는 함수. 프로그램상에서 파일과 스트림을 형성 할 수 있다.

#include <stdio.h>

FILE *fopen(const char *filename, const char mode);

성공하면 파일의 구조체 변수 주소값 반환 실패하면 NULL포인터 반환

  • fopen 함수가 호출되면 FILE 구조체 변수 생성
  • 생성된 FILE구조체 변수에 파일에 대한 정보
  • FILE 구조체의 포인터는 파일을 가리키는 지시자 역할

입력 스트림과 출력 스트림 생성

fopen함수의 인자

filename : 스트림을 형성할 파일의 이름

mode : 형성하고자 하는 스트림 종류

  • rt : 데이터 입력 스트림
  • wt : 데이터 출력 스트림

fclose함수

스트림을 소멸 요청하는 함수 - 파일을 닫는 함수

#include <stdio.h>

int fclose(FILE * stream);

성공하면 0 스트림 소멸 실패하면 EOF반환

  • 운영체제가 할당한 자원의 반환
  • 버퍼링 되어 있던 데이터의 출력

fflush함수

스트림을 종료하지 않고 버퍼만 비우고 싶은 경우 사용

#incldue <stdio.h>

int fflush(FILE * stream);

함수 호출 성공시 0, 실패시 EOF반환

[파일 개방 모드]

C언어의 6가지 스트림 세분화

  • r : 읽기 가능
  • w : 쓰기 가능
  • a : 파일의 끝에 덧붙여 쓰기 가능
  • r+ : 읽기 / 쓰기 가능
  • w+ : 읽기 / 쓰기 가능
  • a+ : 읽기 / 덧붙여 쓰기 가능

텍스트 파일(text file)

사람이 인식할 수 있는 문자를 담고 있는 파일

바이너리 파일(binary file)

컴퓨터가 인식할 수 있는 데이터를 담고 있는 파일

[파일 입출력 함수]

feof 함수

파일의 끝을 확인하는 함수

#include <stdio.h>

int feof(FILE * stream);

파일의 끝에 도달한 경우 0이 아닌 값 반환

 

fread 함수

바이너리 데이터의 입력을 진행하는 함수

#include <stdio.h>

size_t fread(void * buffer, size_t size, size_t count, FILE * stream);

 

fwrite 함수

바이너리 데이터의 출력을 진행하는 함수

#include <stdio.h>

size_t fwrite(const void * buffer, size_t size, size_t count, FILE * stream);

[텍스트&바이너리 데이터 동시 입출력]

파일의 텍스트 데이터와 바이너리 데이터로 이루어져 있다면, fprint() 함수와 fscanf() 함수를 사용한다.

fprint(fp, ~~~~);

여기서 사용된 fp는 파일 구조체 포인터를 지칭한다.

[파일 위치 지시자]

파일 위치 지시자

파일 위치 정보 저장하고 있는 파일 구조체 멤버.

파일이 처음 개방되면 맨 앞부분 가리킨다. 읽거나 쓰기를 원하면 파일 위치 지시자를 이동시킨다.

 

fseek 함수

파일 위치 지시자를 직접 이동시켜야 할 경우.

#include <stdio.h>

int fseek(FILE * stream, long offset, int wherefrom);

 

ftell 함수

현재 파일 위치 지시자 정보를 확인하고 싶은 경우

#include <stdio.h>

long ftell(FILE * stream);

반응형

'Programming Language > C Programming' 카테고리의 다른 글

[C프로그래밍 Chapter20]  (0) 2020.02.17
[C프로그래밍 Chapter19]  (0) 2020.02.12
[C프로그래밍 Chapter17]  (0) 2020.02.10
[C프로그래밍 Chapter16]  (0) 2020.02.06
[C프로그래밍 Chapter15]  (0) 2020.02.05
Comments