c 언어 snprintf 이하 문자열 API 에휴...

emptynote의 이미지

오늘 snprintf 헤더 위치를 웹에서 찾다가 우연히 KLDP 글을 읽었는데요.

참고 url : http://kldp.org/node/69784

컴파일 마다 그 동작이 다를수있다는 말이 맘을 아프게 하는군요.

c언어 오래 하신분들의 특성이 잘못된 고정관념일수도 있지만,

그냥 있는 API 쓰시지 않고 순수 제작해서 쓸려는 경향이 강하다는 느낌을 받았습니다.

그런데 위에 글을 읽어 보니 이해가 가네요.

그리고 isprint 라는 함수도 참 난감한 함수네요.

아니 문자를 취급하는데 signed 가 어디 있다고 int 로 파라미터를 받는거죠.

이거 겁나서 표준 함수라고 주장하는 함수 맘놓고 쓸수있겠습니까?

JuEUS-U의 이미지

getc의 return type이 int입니다. (저도 이건 왜인지 모르겠지만... 커널 내부 IO때문인가...?)
그렇다보니 같이 쓰이는 함수 몇가지가 char 대신에 int를 사용합니다.

cinsk의 이미지

file에 저장된 character의 모든 경우의 수 + EOF를 나타내기 위해서 int를 씁니다.

emptynote의 이미지

EOF 가 libio.h 에서

#ifndef EOF
# define EOF (-1)
#endif
#ifndef NULL

이렇게 정의 되어 있군요.

왜 isprint등의 파라미터가 int 인지 이제 알겠네요.

좋은 정보 감사합니다.

익명 사용자의 이미지

혼자 생각하는것도 좋지만 C 공부를 좀더 하는게 훨씬 좋겠습니다.
왜 int 형을 쓰는지에 대한 역사적 기술적인 이야기가
21일 완성 같은 이상한 책이 아닌 정상적인 책에는 나오는데요.