2005-12-01から1ヶ月間の記事一覧
上の find1 プログラムは 実際に 役にたつのか、UNIX の time コマンドを 使って 調べてみた。 検索用の ファイルを 用意、全部で 5100行ほど ある。 http://www4.kcn.ne.jp/~yoitiro/unix_study/book_stk.txt 測定してみると、$ time ./find1 三浦アンナ bo…
C programming note*1 keyword を コマンドライン上で 指定するため、 main() 関数は 次のように なります。main(int argc, char **argv) { char *keyword; FILE *fp; --argc; ++argv; if (argc usage(); /* no return */ --argc; keyword = *argv++; if (ar…
[リゴベルタ・メンチュ] web page の 消えてしまわないうちに リンク。 1. 「左翼」 デビッド・ストール氏の 奇妙な正義 - 狐崎知己 2. (参考) デビッド・ストール氏 インタビュー 3. (参考) リゴベルタ・メンチュ氏 インタビュー New York Times を 媒体に …
C programming note*1 たとえば、「入力テキストの中で "the" という 文字列が 含まれている 行だけを 選んで 出力する (そうでない行は 出力しない) という 処理は、いろんな場面で ありそうな処理だ。 入力が テキストであるときに、それを 1文字ずつ 処理…
マルクスの遺稿は エンゲルスの遺言によって ベルリンの ドイツ社会民主党文庫に 保存されていた。 その文庫に アジアの人間としては おそらく はじめて 研究のため 出入りした人の 証言が ふるい雑誌に 掲載されている。 今では 取り上げられることもないが…
C programming note*1 あとは、それぞれの 関数を 組み立てていきます。 今回は 1つの ファイルに 納めましたが、長くなるようなら、別々に コンパイルするという 方法も あります。/* ce3r.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h>#define MAX_SIZE (</ctype.h></string.h></stdlib.h></stdio.h>…
C programming note*1 関数 carte() を より 一般的な かたちに 改良していきます。int carte(FILE *fp) { char buf[MAX_SIZE]; while (fgets(buf, MAX_SIZE, fp) != NULL) { remove_pre_blank(buf); remove_pos_blank(buf); center(buf, width); if (fputs(…
C programming note*1 今度は、1行に 入る 文字数を、プログラムの中で 定義するかわりに、 コマンドラインの パラメータとして $./ce3r -w30 のように 指定して 実行するだけで、コンパイルして プログラムを つくり直すことなく、既定値の 80 文字の 代わ…
[Patriot Act] Japan.Linux.com の記事を 読んで ... http://japan.linux.com/enterprise/05/12/15/0159242.shtml 期限立法の U.S.A. Patriot Act が、公聴会での 審議を経て、延長される 可能性が でてきた (via Japan Today)。 すでに この法の 存在意義は…
C programming note*1 rmposblank() では うまく 動いてくれてますが、errata によると、そこで 使われる関数に 一部 不具合がある とのことです。 関数 remove_pos_blank(char *) において、元のコード (のまま) では、 「空白 もしくは タブの 連続 のみか…
「考えてみると、文字列の後ろに タブや スペースがある 状況というのは よく わからない」 なんて 書いたけど、そんなケースに 即 遭遇してしまった。 http://nobelprize.org/literature/laureates/2005/pinter-lecture-e.html 上の page を テキストブラウ…
C programming note*1 次は、文字列の 後ろ側にある 空白を とり除く関数、void remove_pos_blank(char *buf) { char *q; if (*buf == '\0') return; q = buf + strlen(buf) - 2; /* minus 2 ('\n' + '\0') */ while (ISBLANK(*q)) --q; *(q + 1) = '\n'; *(…
C programming note*1 center() は、タブや スペースのような 空白が 文字列の 前後に 含まれていると、うまく 中央揃いには なりません。 そこで 少し コードを 追加していきます。 まず、文字コードが 空白か 否かを チェックする マクロを つくっておきま…
Dennis Ritchie の page を ときどき check してる人は、今 どのくらい いるんだろう ? http://www.cs.bell-labs.com/who/dmr/ 確かに 歴史文書に 準じるものも 多いし、C の 成立ちを 調べてる人 以外、興味が もてないかも しれない。 でも、C 自体 基本は…
C programming note*1 行単位の 入出力が 可能になったので、次は メニューカードのように それぞれの行を 中央揃えにする プログラムを つくっていきます。 それから、エディタ画面に print したときに 中央揃えに なることと、フォントの幅が 全て 同じだ…
C programming Language Free Books "The New C Standard - A Cultural and Economic Commentary 2005 rev." (pdf.file) http://www.knosof.co.uk/cbook/ (page の 中程に pdf.file への リンクが あります) "Numerical Recipes in C - The Art of Scientifi…
C programming note*1 プログラム cat3 には、入力した文字を そのまま 標準出力する 関数 do_one() が 含まれています。void do_one(FILE *fp) { int c; while )((c = fgetc(fp))( != EOF) fputc(c, stdout); }do_one() を、その入出力を 配列を使って 行単…