« C言語よ永遠にっ | メイン | チャンスと似非チャンス »

2005年07月07日

BBS作成過程作業報告

begin()

そこはかとなく書くかもしれません。

10:00現在

今のところ、かなり思い通りに行っています。
懸念していたUNIX上での動作も、Cygwinでのテストではうまく行ってくれました。
ただし、実機でどう動くかはまだわかりませんが。
とはいえ、おかしな事はしていない筈なので、動くとは思います。

今完成している部品は、
・FileReadLine:名前の通り
・FileLineRefresh:引数に空の文字列を持たせると指定行を削除できます
・StringTokenizer:文字を前から順番に読んでいって区切り文字かを判別する、無理矢理な実装ですけれども。

次必要な部品は電車の中ででも考える事とします。
#大枠は設計済みですが、各部の詳細は作りながら詰めようという杜撰なやり方

ここまではボトムアップで来たけれど、次はトップダウンかなあ。
まあ、その辺も含めて通学中の暇な時間に考える事とします。
しかし、コンソールオンリーの入力では投稿がかなり面倒になってしまうのですよね。
とは言うものの、Xウィンドウシステムで遊ぶ程の時間的余裕も無いわけで。
#今日の帰宅までにメインエンジンが完成してしまうくらいの余裕ができれば、挑戦してみたいかも。

やっぱり、限られた条件下で内部に無駄に趣味を込めた遊びのコーディングは燃えますね。むしろ萌えかもしれない。
今回のコードに限っては、細部のアルゴリズムには無駄が散見されますが今の所構造的にはそれほどスパゲッティーになっていないと思います。
さて、いつまでそれが続けられるかなあ。

続く(?)

学校にて


冗談きついです。仕方ないので帰宅。
一応実機での動作も確認、
memo:sh.edu.kutc.kansai-u.ac.jp
ファイルのアップロードができないのが痛いですが。
実験はできますしね。

就寝前

他の作業をしていてあまり進まず。
続きは起きてから。

時間の余裕が無くなってきたのでカリカリ書いていかないと。

起床

寝坊しました。
ちょっと時間の余裕がとても無いのでここからは急ピッチで。

malloc

char *str;
char *str2;

str2 = malloc(strlen(str));
strcpy(str2,str);
printf("%s",str2);
free(str2);

は、間違い。
\0の分を勘案しなければならないのでmalloc(strlen(str)+1)にすべき。
http://www.st.rim.or.jp/~phinloda/cqa/cqa4.html

mallocの戻り値の検査は、していません。

string

C言語で文字列を扱った事はポインタと同じで忌避していたんですが、
この前JAVAで嫌というほど文字列を扱うコードを書かざるをえなかったので少し慣れて抵抗が無くなりました。
もちろん、Cの文字列操作は基本的に内部では全部Unicodeになっている上に既存の様々なメソッドが用意されているJAVAとは違って、複雑で危険が伴うので私のスキルでは安全かつ効率的に実装する事は難しいのですが。

strcat - 追記
便利ですが、mallocしたばかりで初期化していない(\0が存在していない)メモリ領域に書き込むと異常動作します。
strcpy(str,"");しなければ。

中断

POSTまで完成。
後はGETを作ればサーバ側はほぼ完成。
残りはクライアントになりますが、時間がほんとにピンチなので予定していた機能を大幅に縮小する事になりそうです。
とりあえず動く所まで持っていって時間と相談しつつ機能拡張ですね。

投稿者 miff : 2005年07月07日 10:17

コメント



XREAAD