すがブロ

sugamasaoのhatenablogだよ

C

printfフォーマットで左詰め

右詰めしかできないと思っていたが "-"を付けることで左詰めにすることができる。最初Rubyのsprintfのフォーマットで見つけたんだけど、C言語でも同様に左詰めができたのだった。 #include <stdio.h> int main(void) { printf("[%10d]\n", 9); printf("[%-10d]\n", 9)</stdio.h>…

gdb の GUI フロントエンドなツール

ddd というツールがあります デバッガ gdb と GUI ddd を用いた C, Java プログラムのデバッグ - 計算科学/実習第21回課題 ここを見てもらえれば雰囲気はわかると思いますが。。。 こーいうのの、もうちょっとイケてる版を作ってくれる人いないかなぁ*1。 と…

C言語のエラー処理

C

どうやれば美しくなるのか 例えば、こんなソース 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int hoge(void) { 5 char* list1; 6 char* list2; 7 int returnCode = 0; 8 9 list1 = malloc(sizeof(char)*10); 10 if (list1 == NULL) { 11 puts("><"); 12 return 1; 13 } </stdlib.h></stdio.h>…

静的コード解析ツール splint

C

splint という解析ツールがある MacOSX だとデフォルトでは入っていないようだけど、port install splint でインストールできる。 これを使う事でバグが混在しやすいコードや、未使用の変数等を解析して教えてくれる。 ためしに使ってみる。 以前書いた正規…

正規表現したい!

C

このあつい思いは止められない あまり C言語で正規表現するって聞かないのだけど、もはや正規表現脳なので字句解析に正規表現なしとか考えられない。 なので、必死こいて調べてみた。 以下参考になりそうなサイト regex.hの使い方 404 Not Found sh1.2 pyblo…

リストその2

C

リストを作ってみた( new と add だけ) こんな感じの双方向リストを定義して、追加や削除を行う汎用的な関数を作ってみようと思う。 今のところ、追加のみ対応している。 こんな構造体のリストになっているけど、value は void 型のポインタとかにすれば汎…

リスト

C

所謂 List的なもの 標準Cに List なるものは、当たり前だけど、無いようだ。 できるだけ汎用だといいんだけど、例えば int ならこんなデータ型を用意すれば良いのだろうか。。。 typedef struct list { int value; struct list* next; } intList; んで、動的…

プロセスを監視するプロセス?

C

fork-exec において 複数の子プロセスを生み出して、常に一定のプロセスを起動させるにはどのようにすれば良いだろうか。 いまいちイディオム的なのがよくわからなかったので、必死こいて作ってみた。 子プロセスが exec するプログラム(sleep というファイ…

DDD というデバッガ

C

GDB のフロントエンド http://www.gnu.org/software/ddd/ これを使うとグラフィカルにデバッグができるみたい。 Linuxでも動く。 簡単な解説はここ(↓)あたりを参照。 http://nenya.cis.ibaraki.ac.jp/TIPS/ddd.html 基本的に GDBのフロントエンドなので、 …