風で飛んでいくチラ裏

気ままに雑記メモ書き殴り。古い記事は別blogからの引っ越しなのでレイアウトがアレです。

2009-01-01から1年間の記事一覧

CFAQを読む - 2

C

http://www.kouno.jp/home/c_faq/c2.html#0 2.1 x1は実際に使うときも struct x1 local_x1; という使い方になる。 2.4 ------ typedef struct { int x; int y; } DATA; ------ ------ typedef DATA* P_DATA; ------ 使う側は P_DATA をモジュールから取得し…

CFAQを読む

http://www.kouno.jp/home/c_faq/ 困ったときにお世話になるCFAQ。何度も見に行くけど、そのたびに違う発見が。 Cの教科書も今読み直すと違う発見があるかもなぁ。 つわけで、読んだときのメモを書き記してみよう。 1.1 > 文字データ型を(特にunsigned char…

strlcat

C

strlcpyと同じ系。 size_t strlcpy(char *dst, char *src, size_t size) dstの末尾('\0'の位置)から、srcをくっつける。 strlen(dst) + strlen(src) > size であれば、size-1までつなげて、 末尾をヌル止めする。 sizeにはsizeof(dst)を入れるのが普通。strl…

オレオレ通信仕様

詐欺ではなく、独自プロトコルの通信仕様を考えてみましょう。的な。 かなり適当にメモ。 RFC等を漁って適当なネットワークプロトコルを1つか2つ選んで勉強したほうがよっぽどいいですね。 ・リクエスト-レスポンス方式?垂れ流し?(TCPかUDPかみたいな) ・…

配列の初期化

C

int a[10] = {0}; の意味は? 1. 配列 a の全ての要素を 0 で初期化する 2. 配列 a の最初の要素に 0 を入れる int a[10] = {1, 2, 3,}; は書き方としてOK?

strncmp

C

int strncmp(const char *s1, const char *s2, size_t len) s1とs2をlen分比較し、その結果を返す。 s1 > s2 なら正、 s1 = s2 なら0、 s1 実装依存。 大体は違いがあった文字の差が返る。 s1 = "1003"; s2 = "1000"; だと、 strncmp(s1, s2, strlen(s2)); …

strchr

C

http://0xcc.net/blog/archives/000190.html if(strchr("abcd", c)){ } ifの条件が真になるのは、cが'a', 'b', 'c', 'd', '\0'(!)のとき。 へぇー。 なんとなく\0の前までを探索するイメージがあったなぁ。 そういや、 c が、自分が欲しい文字かどうかを調べ…

getReaderとgetParamater系って一回のリクエストで同時に使えないの?

java servlet 2.4 Tomcat 5.5.28 クエリのkeyとvalueを使って応答を返すのは、まあ普通にできますわな。 HttpServletRequest#getParameterNamesを使って、keyをEnumerationで持ってきて、 それぞれにgetParameterすればいい。 で、これとは別にアクセスのロ…

strcpy, strncpy, strlcpy

C

strcpy(char *dst, const char *src) dstのサイズよりsrcのほうが大きいとdstの後ろを壊すので使わない。 strncpy(char *dst, const char *src, size_t size) size文字分コピーするので、dstのサイズを知っている場合、メモリを壊さないように書けるけど、 …

win版gvimの外部コマンドは環境変数SHELLの値を参照する?

win版gvimのはなし 他の方のvimrcとかを参考にして、色々設定いじくってるんですが、 なんか外部コマンド実行あたりでこけるなぁと思ってよく見てみたら、 C:\XXXX\cygwin\bin\bash.exe -c "<command>" ってなってました。コマンドの中に""が入ってると、上手く動かな</command>…

MPLAB IDEの起動の仕方によってカスタムビルドコマンドが失敗する?

PIC

手短に MPLAB IDEのビルドからカスタムビルドを実行する場合、これは当然、IDEの実行時のディレクトリがカレントディレクトリになってるので、直でIDE起動した場合とプロジェクトファイルから起動した場合で違いを吸収できるようにマクロを使いましょうね。…

MPLAB C18 Compilerはデフォで整数昇格してくれないよ

PIC

はじめに MPLAB C18 CompilerはマイコンのPIC18シリーズ向けのCコンパイラです。 unsigned short bit_ptn = 0x0000; int i; for(i = 0; i < 16; i++){ bit_ptn |= 1 << i; } /* このときのbit_ptnの値は?? */ ループを抜けたときのbit_ptnの値は 0xFFFF に…

ディレクトリの内容を表示したい

C

そういえばディレクトリアクセスってCだと面倒なんだろうなーとか勝手に思ってたんだけど、 便利な関数がありました。 小俣光之:コンピューターのページ(C言語講座)http://www.ncad.co.jp/~komata/c-frame.htm メニューのリンク「・ディレクトリ内容の読…

for文の中のコンマ

PIC

※PICで書いたけど普通の(?)Cでも多分同じ #define MAX 64 int i; char str[MAX]; /* strにMAXまで文字を入れる適当な処理 */ for(i = 0; i < MAX, str[i]; i++){ putchar(str[i]); } こんな文があると、for文終了の評価は (i < MAX) は実行されるが評価され…

PIC18F46J50 ECCPのコンペアマッチ・スペシャルイベントトリガでA/D変換がFire!

PIC

概要 ECCPのコンペアマッチ・スペシャルイベントトリガを使用すると、 もれなくコンペアマッチのタイミングでA/D変換開始のトリガが発行されるよ! できるだけ正確な時間カウントをしたいと思ったとき、 タイマのオーバフローを使ってもできるっちゃできるん…