C でクロージャ

gcc 拡張を使うと、関数の中に関数を定義することができる。これを利用すると C でもクロージャが使えることを少し前に知ったが、ようやく理解できた…気がする。 ...

2010-03-30 (火) · masutaka

UNIX 時間

業務で C 言語と、シェルコマンド date での UNIX 時間(1970 年 1 月 1 日 0:00 からの秒数)の取得方法を調べたのだけれど、我らが Emacs Lisp を調べていませんでした。 Emacs Lisp (time-to-seconds (current-time)) で良いようです。 ...

2009-11-21 (土) · masutaka

セキュアコーディング

セキュアコーディング - JPCERT コーディネーションセンター ここに無料セミナーの案内が掲示されています。 「C/C++ セキュアコーディング ハーフデイキャンプのご案内 」 Part 1. 7月16日(木) 13:00-18:00 「文字列、整数」 Part 2. 8月 7日(金) 13:00-18:00 「ファイル入出力」 Part 3. 9月10日(木) 13:00-18:00 「動的メモリ管理、書式指定文字列」 昨年度の資料をダウンロードできます。 http://www.jpcert.or.jp/research/materials.html ...

2009-07-02 (木) · masutaka

main() の第 3 引数

処理系に依存してしまうが、main() の第 3 引数には環境変数リストが入っているとのこと。うちの Debian GNU/Linux squeeze では参照できた。 #include <stdio.h> int main(int argc, char **argv, char **envp){ int i; for (i = 0; envp[i] != NULL; i++){ printf("%s\n", envp[i]); } return 0; } 404 Blog Not Found:CGIの神話と現実 int void (main)の意味/// -OKWave

2009-05-24 (日) · masutaka

gcc の -Wextra オプション

[2009-04-07-2] を調べていく過程で -Wextra オプションを知った。gcc3 までは -W とのこと。-Wall って、“all” じゃないのか。。。 -Wextra は、-Wall よりも厳しめの警告を出すようだ。両方有効にしたい 場合は、"-Wall -Wextra" と指定する。 ...

2009-04-07 (火) · masutaka

printf() のような関数を自作した。

せっかくの休みなのでw、printf() のような関数を自作してみた。 static char my_buffer[1024 * 1024]; extern void my_printf(const char *fmt,...); 訳あって、書き出し先は my_buffer という外部変数。va_list も訳あって使えないので、可変長引数は自前で読み込む。 ...

2009-03-20 (金) · masutaka

同一ネットワーク上のマシン同士でのプロセス間通信

以下の Web site にサンプルソースとともに簡潔にまとめられていた。 素晴らしい。 URL: http://www.ueda.info.waseda.ac.jp/~toyama/network/example2.html 以下のマシンでテストした。 サーバ -> Cygwin on WindowsXP クライアント -> Debian GNU Linux squeeze (testing) make 時の注意 Debian では libsocket が見つからなくてリンクエラーになった。 Linux では不要らしいので、Makefile 中の -lsocket を削除した。 Cygwin では libsocket と libnsl が見つからなくてリンクエラーに なった。両方とも cygwin1.dll に含まれているらしいので、Makefile 中 の -lsocket と -lnsl を削除した。 テスト Cygwin で iserver.exe を実行し、クライアントからの通信待ち受け状 態にした。 Linux で iclient を実行した。そのまま文字列を打ち込んだら、大文字 に変換されて表示された。成功! 補足 大文字への変換は iserver.c の toupper() で行っている。iclient は 標準入力から受け取った文字列をサーバに送り、送り返された文字列を printf() しているだけ。

2009-03-14 (土) · masutaka

const の位置

(1) const int *p; (2) int *const p; (3) int const *p; (1) は const int なので、*p が read only になる。 (2) は *const なので、p が read only になる。 (3) は (1) と同じ。

2006-12-19 (火) · masutaka

データ型のサイズ

char=1byte固定 (整数型) short int <= int <= long int short int は short と記述可能 long int は long と記述可能 (実数型) float <= double <= long double URL: http://www9.plala.or.jp/sgwr-t/c/sec13.html

2006-05-25 (木) · masutaka

C言語で、小数の小数部分だけを抜き出す方法

その1 float shousuu, zenbu = 1.5; shousuu = zenbu - (int)zenbu; その2 #include <math.h> float zenbu = 1.5, seisuu, shousuu; shousuu = modff(zenbu, &seisuu);

2004-12-10 (金) · masutaka