C 를 공부하던중... 의문이 있어서 문의 드립니다.

익명 사용자의 이미지

안녕하세요..

practice C programming 을 공부하던 중 아래와 같은 소스가 있는데..

read 함수는 다음과 같고....

read_size = read(in_file, buffer, sizeof(buffer));

~ 중략 ~

write(out_file, buffer, (unsigned int) read_size );

~ 후략 ~

여기서 write 함수에서 세번째 인자 에서 ( unsigned int ) 라는
식으로 자료형이 붙는 이유를 모르겠습니다.

함수의 원형은 다음과 같이 세번째 인자의 자료형이 주어졌는데..
unsigned int 라고 자료형을 주는 이유를 모르겠습니다.

ssize_t write(int fd , const void * buf , size_t
count);

그럼 이만 줄입니다.

감사합니다.

익명 사용자의 이미지

size_t 가 unsigned int 를 typedef 를 이용해서 재정의 한것일껍니다.

아마도 read_size 변수는 int 형인듯, 그래서 size_t 또는 unsigned int

로 변경하는 것 같습니다.

그럼 고운 하루

리눅스 wrote..
안녕하세요..

practice C programming 을 공부하던 중 아래와 같은 소스가 있는데..


read 함수는 다음과 같고....

read_size = read(in_file, buffer, sizeof(buffer));

~ 중략 ~

write(out_file, buffer, (unsigned int) read_size );

~ 후략 ~

여기서 write 함수에서 세번째 인자 에서 ( unsigned int ) 라는
식으로 자료형이 붙는 이유를 모르겠습니다.

함수의 원형은 다음과 같이 세번째 인자의 자료형이 주어졌는데..
unsigned int 라고 자료형을 주는 이유를 모르겠습니다.

ssize_t write(int fd , const void * buf , size_t
count);

그럼 이만 줄입니다.

감사합니다.

익명 사용자의 이미지

그냥

---------------------------------------------
write(out_file, buffer, (ssize_t) read_size );
---------------------------------------------

이렇게 쓰셔도 됩니다.

다만, ssize_t가 정의된 헤더파일을 같이 인클루드 해주어야 하겠죠.