반응형

파일의 개방 모드 
 -> stream을 어떻게 생성하는가에 대한 방법. fopen(  , "wt" 또는 "rt" ) write와 read 이 외 모드.

 


a.txt data는 사람이 볼수 있는 파일,  

a.bin 메모장으로 읽을 수 없는 이진수로 된 파일. (음원, 영상 등 소프트웨어에 의해 해석이 되는 데이터)

 

"wt" : write text        -> 텍스트 형태로 사람 또는 프로그램이 쓸 수 있음
"wb" : write binary    -> 바이너리(bin) 파일로 프로그램이 기계어로 생성 (그림, 시스템파일, 데이터베이스 등)


"rt" : read text         -> 위와 동일, 다만 '읽기 모드'
"rb" : read binary

 


스트림의 구분 기준.

1. 읽기 위한 스트림인가? 쓰기 위한 스트림인가?
2. Text 데이터를 위한 스트림인가?  Binary를 위한 데이터 스트림인가?

모드(mode) 스트림의 성격 파일 없으면
r 읽기가능                에러
w 쓰기가능                생성
a 파일끝 덧붙여 쓰기가능 생성
r+ 읽기/쓰기 가능 에러
w+ 읽기/쓰기 가능 생성
a+ 읽기/덧붙여 쓰기 가능 생성
반응형


그러나 +모드들은 잘 사용하지 않음.
모드 r w a 를 주로 사용함.
특징: r은 없으면 에러발생, a는 파일없으면 생성.
       w는 덮어쓰지만, a는 그 뒤에 덮어씀.

// 사용 예제. 이와 같이 모드를 사용함.
fopen("file.txt", "rb");	// read binary
fopen("file.txt", "wt");	//	write text
fopen("file.txt", "a+t");	//	a+ text

 

파일 생성해 쓰기 (파일이 있을 시 덮어씌움)

#define _CRT_SECURE_NO_WARNINGS 는 비주얼스튜디오를 사용할 때 필요하다.

#define _CRT_SECURE_NO_WARNINGS // fopen 보안 경고로 인한 컴파일 에러 방지
#include<stdio.h>

int main(void)
{
    FILE* pFile = fopen("test.txt", "w");

    fprintf(pFile, "hello world");        
    fclose(pFile);

    return 0;
}

(결과)

저장 경로를 따로 지정하지 않아서 .c 파일이 있는 위치에 아래와 같이 txt파일이 생성되었다.

 

 

존재하는 파일을 읽기

#define _CRT_SECURE_NO_WARNINGS 는 비주얼스튜디오를 사용할 때 필요하다.

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void)
{
    FILE* pFile = fopen("test.txt", "r"); //read mode 
    if(pFile == NULL)
    {
        //r로 읽을 때는 파일이 없을 수 있기 때문에 이렇게 널체크를 해주어야합니다.
        //파일이 없으면 FILE*가 NULL 입니다.
        //파일이 없을때 파일을 만드는 처리를 하던지 프로그램에 맞게 짜면됩니다.
        //여기서는 프로그램을 종료 하겠습니다.
        printf("파일이 없습니다. 프로그램을 종료합니다.");
        return 0;
    }
    
    //여기까지 와다는건 read 모드로 파일이 열린것 입니다.
    char str[50];
    fgets(str, 50, pFile);  //파일에 있는거 읽어오기
    
    fclose(pFile);          //파일 닫기
    printf("%s\n", str);    //터미널에 출력
    return 0;
}

(결과)

위에서 생성한 test.txt 파일 내부 글자를 읽고 터미널에 출력했다.

 

 

존재하는 파일에 덮어쓰지 않고, 뒤에 추가하기

#define _CRT_SECURE_NO_WARNINGS 는 비주얼스튜디오를 사용할 때 필요하다.

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void)
{
    // 추가쓰기 모드로 열기
    FILE* pFile = fopen("test.txt", "a");    

    fputs("\n 한줄 내려와서 글자 추가!", pFile); 
    fclose(pFile);                              

    return 0;
}

(결과)

이미 생성된 text.txt 파일에 한줄 내려와서 새로운 글자를 추가하고 닫았다.

 

반응형

+ Recent posts