メインコンテンツまでスキップ

「C」タグの記事が8件件あります

全てのタグを見る

WebSphere MQ: ローカル・キュー操作 - amqsput, amqsget, amqsbcg

· 約7分
Yu Sasaki
Enterprise Security Manager / Advisor

サンプルプログラムを使用して作成したキューへのget, put, ブラウズ操作を確認する。実行環境はLinux (CentOS v6.3)。この記事で使用しているキュー・マネージャーの作成、起動はこちら、またキューの作成はこちらの記事に記載。参考サイトは記事末尾をご参照。

3種類の括弧の対応をチェックするC言語プログラム

· 約4分
Yu Sasaki
Enterprise Security Manager / Advisor

先日勉強会でこの辺のテーマを取り上げたので、字句解析や構文解析(の一部)とスタックの復習も兼ねて作成(required for 1h+)。

実装のポイント

  • 閉じ括弧の有無の判定は、ファイルの終端が読み終わった後。
  • 開き括弧の判定は、閉じ括弧を読み込んだ際に行い、スタックの最上位に対応する開き括弧があるか否かで。
  • 入れ子の(または再帰的な)構造で、どの深さにスレッドがいるか調べるにはスタックを用いる。

10進数を2進数に変換表示するC言語プログラム

· 約2分
Yu Sasaki
Enterprise Security Manager / Advisor

ソースコード

// filename: dtob.c
// convert decimal to binary
#include <stdio.h>
const int BitSize = sizeof(int) * 8; // 整数型のビットサイズを算出
void dtob(int x) {
int bit = 1, i;
char c[BitSize];
for (i = 0; i < BitSize; i++) {
if (x & bit)
c[i] = '1';
else
c[i] = '0';
bit <<= 1;
}
// 計算結果の表示
printf("2進数: ");
for ( i = BitSize - 1; i >= 0; i-- ) {
putchar(c[i]);
}
printf("\n");
}
int main()
{
int x = 0;
do {
printf("10進数を2進数に変換します(0で終了)\n");
printf("xの値: ");
scanf("%d", &x);
dtob(x);
} while (x != 0);
return 0;
}

実行結果

$ gcc dtob.c
$ ./a.out
10進数を2進数に変換します(0で終了)
xの値: 5
2進数: 00000000000000000000000000000101
10進数を2進数に変換します(0で終了)
xの値: 8
2進数: 00000000000000000000000000001000
10進数を2進数に変換します(0で終了)
xの値: 100
2進数: 00000000000000000000000001100100
10進数を2進数に変換します(0で終了)
xの値: 256
2進数: 00000000000000000000000100000000
10進数を2進数に変換します(0で終了)
xの値: 1984949894
2進数: 01110110010011111110111010000110
10進数を2進数に変換します(0で終了)
xの値: 0
2進数: 00000000000000000000000000000000
$

ビットが0か1の判断するループ順序を逆にして、配列末尾に'\0'を代入すれば、計算結果の表示は配列の文字列表示ですみます。そうすると「計算結果の表示」の際にforループを使う必要はないなぁ、と書き終わった今思いました(ぇー)。

作成の経緯

以前、拡張ハッシュ法の削除関数を実装している際に、キーをバケットに振り分ける際のアドレス算出の処理部分にデバッグプリントが欲しくて作ったものです。

Eclipse+CDTを用いてプロジェクトを作成する際の注意点

· 約2分
Yu Sasaki
Enterprise Security Manager / Advisor

以前、K-na TechNotes | Homeのページを参考にWindowsでEclipse3.3とCDTをインストールしました。分かりやすく書かれており、とても参考になりました(謝々)。 たまたまK-na TechNotes | CDT のトラブル対策ページ下部にある

<実行>を押しても、デバッグしても、必ず「アプリケーション・エラー 起動に失敗(バイナリ・ファイルがありません)」のメッセージが出ます。

という件を見て、この症状の理由はProject typesの設定ミスではないかと推測しました。

X Window System 上での描画色の変更

· 約3分
Yu Sasaki
Enterprise Security Manager / Advisor

先日X11/Xlib.h、X11/Xutil.hを用いてフラクタルを描画するプログラムを作成していた折、描画する図形を構成する線分の色を変えようと試みた。X Window Systemではあらかじめ定義されている色名があるが、今回は多くの色を扱うためRGB指定での描画色の変更を行う。まず、以下のような整数型のピクセル値を返す関数MyColorを作成する。