2007-08-11から1日間の記事一覧

K&Rを読もう(27) 問題2-3 htoi

GCC

16進文字列を数値に変換するhtoiを実装せよ。0xのある場合も考慮しなければならない。という問題。GCC拡張のcase 'a' ... 'f'を使ってみた。 #include <stdio.h> #include <stdlib.h> int htoi(char *s) { unsigned int i = 0; int tmp; if (*s == '0' && *(s + 1) == 'x') s +=</stdlib.h></stdio.h>…

K&Rを読もう(26) randの写経。

GCC

疑似乱数がこんなに単純なアルゴリズムで出来ているとは・・・。もっと単純にしてみた。 適当なa、p、qを選んで、ap + q = a'とする。次にa'をaに代入する。で、余りを取る。後はニュートン法のように繰り返すだけ。 #include <stdio.h> #include <stdlib.h> unsigned long int </stdlib.h></stdio.h>…

K&Rを読もう(25) atoiとlowerの写経。

GCC

K&Rを写経しよう。今回はatoiとlower。文字列演算が出てきたので、rot13(シーザー暗号)も追加してみた。 #include <stdio.h> #include <stdlib.h> int atoi_copy(char *s) { int i, n = 0; for (i = 0; isdigit(*(s + i)); i++) n = 10 * n + (*(s + i) - '0'); return n; } int</stdlib.h></stdio.h>…

K&Rを読もう(24) strlenの写経。

GCC

K&Rを写経しよう。サンプルは配列だったので、ポインタ演算でstrlenしてみた。 #include <stdio.h> #include <stdlib.h> int strlen_copy(char *s) { int i = 0; while (*(s + i) != '\0') i++; return i; } int main(void) { printf("%d\n", strlen_copy("test strings.")); /*</stdlib.h></stdio.h>…

K&Rを読もう(23) 演習2-2 getline改

GCC

今日から夏休みデス!!前回のGWはRuby三昧だったので、今回はK&R三昧にしようかと考えてますが、今回の夏休みは実家に帰る予定なので、あんまり進まなそう・・・。 演習 2-2 getlineを&&,||を使わずに・・・という問題ですが、前にやっちゃったので、略。ボク…