헤더 파일 : string.h #include void* memcpy(void* destination, const void* source, size_t num); strcpy와 memcpy 모두 문자열을 복사하는 데 사용된다. strcpy는 char 하나하나 복사를 하게되고 memcpy는 이름처럼 memory 관점에서 복사이다. memory 단위로 복사하기 때문에 memory 크기를 넣어주어야 한다. strcpy는 NULL 체크를 하게 되는데 이러한 차이로 인해 memcpy보다 약간 느리게 된다. (NULL을 만나면 복사를 중단하기 때문에 char 하나하나 NULL인지 비교한다) 검색해보니 memcpy의 num 인자에 strlen(source)를 넣는 사람도 있던데 그냥 sizeof(destination..
파일 읽기와 쓰기 파일의 내용을 읽기 위해 read 함수를 사용하며 write 함수를 사용함으로써 파일에 내용을 쓸 수 있다. read와 write 함수의 리턴값의 데이터형은 ssize_t이며 ssize_t는 에 int(환경에 따라 long으로 정의되어 있다. 아마도 어떤 system은 int로, 어떤 system은 long으로 사용할 수도 있으니 데이터형을 따로 재정의한 듯 싶다. 파일 읽기: read #include ssize_t read(int fildes, void *buf, size_t nbytes); fildes: file descriptor buf: 바이트를 저장할 memory 영역의 시작 주소 nbytes: 읽어올 바이트 수 file descriptor가 가리키는 파일에서 nbytes로 지..
저수준 파일 입출력 저수준 파일 입출력은 byte 단위로 입출력을 수행한다. 저수준 파일 입출력을 이용하면 일반 파일뿐만 아니라 특수 파일도 읽고 쓸 수 있다. 저수준 파일 입출력은 System call이다. File Descriptor 모든 저수준 파일 입출력 함수는 file descriptor를 사용한다. file descriptor는 현재 열려 있는 파일을 구분할 목적으로 UNIX에서 붙여놓은 번호이며 열린 파일을 참조하는 데 사용하는 지시자 역할을 한다. file descriptor는 open 함수를 사용해 파일을 열었을 때 부여된다. 0번부터 시작하는데 0, 1, 2번 file descriptor는 기본적으로 용도가 지정되어 있는 상태이다. 0번: standard input 1번: standar..