표준 입출력 파일은 파일 open, close, 입출력 버퍼 설정, 초기화 등을 시스템이 자동으로 처리한다.
입출력 버퍼
cpu의 속도와 디스크 드라이브의 속도 차이로 인한 처리 지연을 개선하기 위해 고급수준의 함수는 이러한 것들을 반든시 별도로 선언해야 한다.
fopen()함수
파일 개발
FILE = fopen(char*fname, char *mode);
fname: 개방하고자 하는 file이름
mode: 파일에 대한 접근 모드, 행하고자 하는 직업의 형태 결정
fclose()함수
스트림이 성공적으로 종결되면 정수값 0을 리턴, 에러발생하면 EOF(-1)리턴
쓰기 모드로 "test.dat"파일을 열고 다시 닫는 예
fputs()함수
함수원형: int fputs(const char* str, FILE* pFile);
즉, 파일에 문자열을 쓰는 함수이다.
함수 설명
1. 첫 번째 인자: 파일에 쓸 문자열을 넣으면 된다. c언어 스타일의 문자열이다.
2. 두 번재 인자: 파일의 파일 포인터를 집어 넣는다.
3. 반환형: 집어넣은 문자의 수, 문자열의 길이. 보통은 '반환형을 0이상일 때는 정상적으로 작동했고 0보다 작을 땐 비정상적으로 함수가 완료되었다.'를 판단하기 위해 사용
함수 동작
매개 변수로 들어온 str문자열을 해당 파일에 쓴다.
문자열을 성공적으로 집어 넣었을 때는 0이상인 값을 반환한다.
함수 사용법 간단 버전
FILE*pFile = fopen("text.txt", "w"); //파일을 만들고 오픈
fputs("blockmask, pFile); //문자열 "blockmask"를 만든 파일에 집어 넣는다.
fclose(pFile); //파일 닫는다.
fgets함수
함수원형
char*fgets(char*str, int num, FILE*pFile);
즉, 파일로부터 문자열을 가지고 오는 함수이다.
함수 설명
1. 첫 번째 인자: 파일에서부터 가지고 온 문자열을 넣는 변수
2. 두 번째 인자: 한 번에 가지고 올 문자열의 길이를 넣는 변수
3. 세 번째 인자: 파일의 파일 포인터를 집어 넣는다.
4. 반환형: 가지고 온 문자열을 반환하거나, 파일의 끝에 도달했을 때는 널 포인터 반환
함수사용법 간단 버전
FILE*pFile = fopen("test.txt", "r"); //읽기 모드로 파일을 오픈
char str[100]]; //읽어올 문자열을 담을 변수 선언
fgets(str, 100, pFile); //문자열을 최대 100자리까지 읽어서 str에 담는다.
fseek
파일 위치 지시자의 이동
FILE 구조체의 멤버 중에는 파일의 위치를 저장하고 있는 멤버가 있다.
'파일 위치 지시자'라고 부르는 이 멤버 파일이 처음 개방되면 파일의 맨 앞부분을 가리킨다.
#include<stdio.h>
int fseek(FILE*stream, long offset, int wherefrom);
stream으로 전달된 파일 위치 지시자를 wherefrom부터 offset만큼 이동시킨다는 의미입니다.
-매개변수 wherefrom에 전달될 수 있는 상수로는 다음과 같은 것들이 있습니다.
- 매개변수 offset에는 양의 정수뿐만 아니라 음의 정수도 전달될 수 있습니다.
양의 정수라면 파일의 마지막 위치를 향해서,
음의 정수라면 파일의 시작 위치를 향해서
파일 위치 지시자가 이동합니다.
ftell
현재 파일 위치 지시자의 위치를 알 수 있음
FILE 구조체의 멤버 중에는 파일의 위치를 저장하고 있는 멤버가 있다.
'파일 위치 지시자'라고 부르느 이 멤버 파일이 처음 개방되면 파일의 맨 앞부분을 가리킨다.
#include <stdio.h>
long ftell(FILE *stream);
ftell함수는 파일 위치 지시자의 위치 정보를 반환합니다.
파일 위치 지시자가 첫 번째 바이트를 가리키면 0을 반환하고 세 번째 바이트를 가리키면 2를 반환합니다.
'C언어' 카테고리의 다른 글
C언어 <윤년, 사분면, 알람시계, 오븐 시계> (0) | 2023.08.05 |
---|---|
C언어 <조건부 컴파일> (0) | 2023.08.05 |
C언어 <메크로 함수> (0) | 2023.08.05 |
C언어 <공용체> (0) | 2023.08.05 |
C언어 <구조체> (0) | 2023.08.05 |