hahn

[C] read() 본문

개발 공부/C

[C] read()

hahn 2022. 1. 1. 12:06
728x90
반응형

개요


과제 중에 read() 함수를 사용할 일이 있어 작성해본다.

 


내용


read() 함수 내용
header unistd.h
prototype ssize_t read(int fd, void *buf, size_t count);
parameter fd : 파일 디스크립터
void *buf : 파일을 읽어서 저장할 버퍼
count : 버퍼의 크기
return value
(ssize_t)
실패 : -1
성공 : 읽어들인 바이트 수

 


예시


//ahnstu.txt
aaaaa
bbbbb
ccccc
ddddd
eeeee

 

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#define  BUFFER_SIZE   35

int main()
{
	char     buff[BUFFER_SIZE];
	int      fd;
	ssize_t  rd_size;

	fd = open( "./ahnstu.txt", O_RDONLY);
	rd_size = read(fd, buff, BUFFER_SIZE);
	buff[rd_size]  = '\0';
    puts(buff);
    close(fd);
}

전부 읽어오기

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#define  BUFFER_SIZE   5

int main()
{
   char     buff[BUFFER_SIZE];
   int      fd;
   ssize_t  rd_size;

   if ( 0 < ( fd = open( "./ahnstu.txt", O_RDONLY)))
   {
      while( 0 < ( rd_size = read(fd, buff, BUFFER_SIZE)))
	  {
         buff[rd_size]  = '\0';
         puts(buff);
      }
      close(fd);
   }
}

버퍼 크기(5) 만큼 여러 번 읽어오기

aaaaa

bbb
bb
c
cccc

dddd
d
ee
eee

이렇게 나오는 이유는 윈도우에서 개행이 \r\n으로 2바이트라고 한다.

728x90
반응형

'개발 공부 > C' 카테고리의 다른 글

[C] size_t, ssize_t  (0) 2021.12.17