꼬리재귀로 이항계수 구현하기

$$ {n\choose k} = \frac{n!}{k!(n-k)!} $$ 이항계수의 공식. 얼추 코드로 옮기면 아래처럼 된다. $$(0 \le k \le n)$$ int f(int n, int k) { return factorial(n) / (factorial(k) * factorial(n - k)) } 일단 재귀로 바꿔보자… f(n, 0)은 [Read More]

re2c랑 bison으로 파서 만들기

파서를 만들 때, lex로는 토큰을 만들고, yacc로는 토큰의 조합에 따른 행동을 만든다. 이 글에서 re2c는 lex에 대응하고, bison은 yacc에 대 [Read More]

system 대신 fork - exec 쓰기

fork - exec 대신 posix_spawn 쓰기 c언어에서 기존 프로세스를 종료시키지 않고 외부 명령어를 실행하고 싶을 때가 있다. system 함수는 보안상 문제가 많아서 안쓰는 게 좋다고 하고&hel [Read More]

posix aio socket server 예제

열심히 코드를 작성하면서 검색하는데 aio는 소켓을 지원하지 않는다는 글이 있어서 깜짝 놀랐다 ㄷㄷ http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=2298319 댓글 보니까 된다고… 실제로도 되서 다행이다 [Read More]

c socket 예제

여러 예제를 보고 따라하면서 많은 이해가 됐다. sockaddr 구조체와 sockaddr_in 구조체는 크기가 같다는 것이 인상깊었다. 아래는 작성한 예제 #include <stdio.h>#include <unistd.h>#include <sys/wait.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <string.h> int main () { int ret; pid_t pid = fork(); [Read More]