프로그래밍 언어 공부/C

파일 입출력 라이브러리(Basic Step)

CalebHong 2022. 1. 17. 20:55

파일 입출력

입력과 출력의 대상이 파일인 경우

 

입출력 대상

텍스트 파일, 이진 파일

 

입출력 과정

* 스트림을 생성함으로 파일 구조체에 대한 접근이 가능해짐.

 

파일 열기

  • 파일 입출력을 수행하려면 먼저 fopen 함수를 이용하여 파일을 열어야 함
  • fopen 함수의 원형: FILE* fopen(const char* filename, const char* mode);
    • filename : 파일 이름
    • mode : 파일 열기 모드
    • 리턴 값 : 생성된 파일 스트림의 파일 포인터를 리턴 / 파일을 열 수 없으면 Null 포인터를 리턴
  • Default mode는 Text file.

입출력 함수

예제_1

#include <stdio.h>

int main(void)
{
	FILE* fp;
    char ch;
    
    if (fp = fopen("./main.c", "r")) // 리드모드로 파일 스트림 오픈
    {
    	while(EOF != (ch - fgetc(fp))) // 파일의 끝(End Of File)인지로 루프
        	putchar(ch);
            
        fclose(fp);
    }
    
    return 0;
}

예제_2

#include <stdio.h>

int main(void)
{
    FILE* pFile;
    int c;
    int n = 0;
    pFile = fopen("myfile.txt", "r");
    if (pFile == NULL) printf("Error opening file"); // 파일 오픈 확인
    else
    {
    	do 
        {
            c = fgetc(pFile);
            if (c == '$') n++;
        } while (c != EOF);
        fclose(pFile);
        printf("The file contains %d dollar sign characters ($).\n", n);
    }
    
    return 0;
}

 

기타 함수

1. ferror 함수

 - 파일 입출력 시 발생하는 에어를 확인

 - int ferror(FILE* stream);

 - 리턴 값 : 스트림에 에러가 발생했으면 0이 아닌 값을 리턴 / 에러가 발생하지 않으면 0을 리턴

2. feof 함수

 - 파일의 끝인지를 검사

 - int feof(FILE* stream);

 - 리턴 값 : 읽는 위치가 파일의 끝이면 0이 아닌 값을 리턴 / 파일 끝이 아니면 0을 리턴

'프로그래밍 언어 공부 > C' 카테고리의 다른 글

시간 관련 라이브러리  (0) 2022.01.20
텍스트 파일 입출력(응용)  (0) 2022.01.18
도서관리 시스템 고도화(동적메모리)  (0) 2022.01.17
함수 포인터(Function Pointer)  (0) 2022.01.15
동적 메모리  (0) 2022.01.15