[C언어] 파일 입출력 (txt 파일 쓰기, 읽기)

    파일을 입출력할 때는 먼저 파일 스트림을 생성해야 합니다. 그리고 이 파일 스트림을 생성하려면 파일 포인터가 필요합니다. 파일 포인터는 파일에 접근하는 데 사용되는 FILE 구조체 포인터를 말합니다. 즉, 파일 스트림의 실체가 FILE 구조체 포인터입니다. 이처럼 파일 스트림(FILE 구조체 포인터)을 생성하고 파일을 fopen() 함수를 활용하여 연 뒤 여러 가지 파일 입출력 함수를 이용해서 입출력 작업을 할 수 있습니다. 파일 입출력이 끝난 후에는 파일 포인터를 fclose() 함수를 활용해서 닫아주면 됩니다.

     

    파일 입출력 과정

    1. 파일 스트림을 생성한다.(파일 포인터 생성)

    2. 파일을 연다. fopen()함수 사용

    3. 파일 입출력을 수행한다. 

    4. 파일을 닫는다. fclose()함수 사용

     

    TXT 파일 쓰기 예제

    #define _CRT_SECURE_NO_WARNINGS 
    #include <stdio.h> 
    
    int main()
    {
        FILE* fp = fopen("test.txt","w"); //test파일을 w(쓰기) 모드로 열기
    
        for (int i = 0; i < 5; i++) {
            fputs("test\n",fp); //문자열 입력
        }
        fputs("end", fp);
    
        fclose(fp); //파일 포인터 닫기
    
        return 0;
    }
    

    위와 같이 파일 포인터를 생성하고 text 파일을 w모드로 열어준 뒤 fputs함수를 활용하여 txt 파일에 데이터를 추가해줄 수 있습니다. 줄 바꿈이 필요하다면 개행 문자를 같이 넣어주어야 txt 파일에서도 개행이 처리됩니다.

     

    txt 파일의 생성 위치를 모르겠다면 프로젝트에 우클릭을 하고 파일 탐색기에서 폴더 열기 버튼을 누르시면 됩니다.

     

    TXT 파일 읽기 예제

    #define _CRT_SECURE_NO_WARNINGS
    #define MAX 1000
    #include <stdio.h>
    
    void main()
    {
        FILE* fp = fopen("test.txt", "r");  //test파일을 r(읽기) 모드로 열기
        char buffer[MAX] = { 0, };
    
        fread(buffer, 1, MAX, fp); //전체 읽기
        printf("%s", buffer);
    
        fclose(fp); //파일 포인터 닫기
    }
    

    성능면에서 본다면 읽어들이는 횟수를 줄이는 것이 가장 중요합니다. 한 줄씩 읽는 함수, 한 글자씩 읽는 함수들도 있지만 파일 전체를 읽는 fread함수의 효율이 가장 좋습니다.

     

    파일 입출력 관련 함수

    fopen : 파일(스트림 열기) 

    fclose : 파일 닫기 :

    fgetc : 파일에서 문자 읽기 

    fputc : 파일에 문자 출력 

    fgets : 파일에서 문자열 읽기 

    fputs : 파일에 문자열 출력 

    fscanf : 서식 데이터 입력 

    fprintf : 데이터 서식 파일 출력 

    fread : 파일 이진 자료 입력 

    fwrite : 파일 이진 자료 출력 

    fseek : 파일 임의 접근 

    ftell : 파일 현재 위치 

    rewind : 파일 포인터 재설정 

    feof : 파일 상태 파악 

    ferror : 파일 오류 확인 

    fflush : 출력버퍼를 파일에 기록

     

    파일 모드

    r : read 파일 존재한다면 오픈 / 파일 없다면 실패 있다면 데이터 보존
    w : write  없다면 만들고 / 있다면 지웁니다.
    a : append 없다면 만들고, 있으면 기존 내용 보존

    댓글(0)

    Designed by JB FACTORY