アキラのITメモ:C言語

C言語関係のメモ

シリアルポートの通信

Windows上にてシリアルポートを使った通信をしようと思い、JAVAやPerl、Cなどいろいろな言語で試してみたのですがなかなかうまくいかず、結局cygwin+C言語で書きました。以下はその時のメモです。ここのプログラムを参考にしました。

続きを読む "シリアルポートの通信"

乱数の初期化とtime関数

とある乱数を使うプログラムを作って、何回か動作させてみたのですが、どうも一定期間同じ出力を出しているようでどうしたものかとソースコードをみていたのですが、srand(time(NULL));とやっていました。乱数のシードを初期化する方法としてはよく以下のような方法が使われるのですが、

続きを読む "乱数の初期化とtime関数"

ヘッダファイルをコンパイル

大昔に作ったプログラムを再度動かそうとコンパイルしたのですが、gcc: compilation of header file requested というエラーがでて何だろうと思ってMakefileを見ていたら、以下のようなコンパイルをしようとしていました。

続きを読む "ヘッダファイルをコンパイル"

/bin/shを実行するコード

バッファオーバーフローについて勉強していたのですが、/bin/shを実行するコードを見つけたのでここにメモしておきます。IPA セキュアプログラミング講座で紹介されているコードです。

続きを読む "/bin/shを実行するコード"

バッファオーバーフローの確認

以下は、gets()関数によるバッファオーバフローの簡単な実験用プログラムです。年末年始の帰省の折に電車内で暇だったのでパソコンを開いて適当に作ってました。もちろん人はそれほどいなかったので出来たのですが。ちなみに、バッファオーバーフローでリターンアドレスをうまく書き換えることができれば任意のコードを実行できるのですが、その辺りの話はまたいずれということにします。。ここでは簡単にバッファがオーバーフローするという点のみプログラムにより確認します。

続きを読む "バッファオーバーフローの確認"

if文を代用する

またC言語の使えないネタです。Perlでは良く使われているテクニックなのですが、if (A) B; なら A && B;,if (!A) B; なら A||Bでif文を代用できます。

続きを読む "if文を代用する"

変なswitch文

C言語では、if(0)の次の文は飛ばされます。また、switch文で飛んできたものは実行できます。そういうことで、以下のような変なコードを書くことが出来ます。

続きを読む "変なswitch文"

サイト内検索

カテゴリ

エントリ

スポンサードリンク

アバウト

Atom RSS
Powered by MT3.33-ja
合計:total
今日:today 昨日:yesterday