Coding & Programming/C, C++

[C/C++] 파일 읽고 쓰기(file read/write : open, read, write, close functions example)

mainCodes 2021. 2. 28. 08:43

[C/C++] 파일 읽고 쓰기(file read/write : open, read, write, close functions example)

 

안녕하세요 JollyTree(•̀ᴗ•́)و입니다.

이번에는 파일 디스크립터를 이용한 파일 읽고 쓰기에 대한 예제입니다. 파일스트림(FILE 구조체)을 사용하는 fopen, fwrite, fread 등의 함수와 다른 점은 파일스트림 계열의 함수보다는 저수준 함수로 시스템에서 제공하는 버퍼를 사용합니다. 고수준의 프로그래밍을 원하시면 파일스트림 함수군만을 사용해도 괜찮습니다.

 

예제(Example)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#pragma warning(disable: 4996)
 
#include <stdio.h>
#include <sys/stat.h>   
#include <fcntl.h> 
#include <io.h>  
 
#define FILE_CREATE     O_WRONLY | O_CREAT | O_TRUNC
#define WRITE_MODE      _S_IWRITE|_S_IREAD
#define READ_MODE       _O_RDONLY | _O_TEXT
#define FILE_NAME       "maincodes.txt"
#define BUF_SIZE         256
 
int main()
{
    char write_buf[BUF_SIZE] = "mainCodes - https://maincodes.tistory.com/";
    char read_buf[BUF_SIZE] = "";
    int fd, len;
 
    if((fd = open(FILE_NAME, FILE_CREATE, WRITE_MODE)) == -1)
    {
        printf("file open error '%s'", FILE_NAME);
        return 1;
    }
 
    len = write(fd, write_buf, sizeof(write_buf)); //파일 쓰기
    close(fd);
 
 
    if ((fd = open(FILE_NAME, READ_MODE)) == -1)
    {
        printf("file open error '%s'", FILE_NAME);
        return 1;
    }
    len = read(fd, read_buf, sizeof(read_buf)); //파일 읽기
 
    printf("[실행결과]\nmaincodes.txt로부터 읽은 내용 = [%s]\n", read_buf);
    close(fd);
 
    return 0;
}
 

실행결과

생성된 maincodes.txt 파일을 notepad와 같은 텍스트 에디터로 열어보면 다음의 문자열이 저장되어 있는 것을 확인할 수 있습니다.