C言語入門(29) 実際にプログラムを読んで理解を深めよう ls編(3)

Posted: 2013年02月28日

前回は、traverse関数を解説してきました。
今回はtraverse関数が表示処理に用いているdisplay関数を解説していきます。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

バグ:ファイルパスをコピーしたため間違っていませんけど

Posted: 2013年02月25日

文字列操作?エスケープ文字列で書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    CString strSrc = _T("C:temp"); // 全角空白

    // 処理

    return 0;
 }

このプログラムにどのように文字列操作(連結)にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

C言語入門(28) 実際にプログラムを読んで理解を深めよう ls編(2)

Posted: 2013年02月21日

前回は、main関数を解説してきました。
main関数では、コマンドの引数解析を主に行って来ましたが
今回はmain関数が最後に処理を行うtraverseを解説していきます。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

C言語入門(27) 実際にプログラムを読んで理解を深めよう ls編(1)

Posted: 2013年02月14日

前回でひと通りC言語について書いてきたと思っています。
書き残しに気がついたら随時、書いていきます・・・

これからは、C言語で記述されたプログラムを見て解説していきます。
初回は、lsコマンドの実装を見ていきます。
lsコマンドとは、Windowsではdirに近いコマンドで
フォルダのファイル一覧を表示するコマンドです。
lsのソースを読むことを推奨または、読んでいないことは恥ずべきこととも言われています。

最新のlsコマンドのソースは
http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/ls/
です。

今回解説するソース(2013/02/08現在最新)は、
/wp-content/uploads/2013/09/ls.zip
です。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

バグ:Formatでデバッグメッセージを作っただけなのに

Posted: 2013年02月11日

文字列のフォーマット操作で書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    CString strFormat;
    strFormat.Format(_T("%s"), 5);

    // 処理

    return 0;
 }

このプログラムにどのように文字列のフォーマット操作にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , , , | コメント無し »

C言語入門(26) 変数のスコープ(使用可能な範囲)はどこまで?

Posted: 2013年02月07日

今回は変数の存在範囲(スコープ)について説明をします。
変数は、指定された範囲でのみ使用ができその範囲外ではその変数を使用することはできません

具体的には、関数内で宣言されている変数は、他の関数から使用することはできません。
※関数から呼び出された関数内では元の関数の変数は使用することは不可能ではありません。



カテゴリー: プログラム, 入門 | タグ: , | コメント無し »

C言語入門(25) 知らないで使用していた#include、知らなくても使える #include

Posted: 2013年01月31日

今回はおなじみ#includeについて記述していきます。
#include文では、.h(ヘッダー)定義を参照することができます。
参照することで.hに記述されている関数を呼び出すことが可能になります。

タイトル通りですが
知らなくても問題はなく、知っていると評価される豆知識的なことを書いていきます。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

C言語入門(24)コンパイラ依存にはなるけど、知っているといないとで違いがでる#pragma

Posted: 2013年01月24日

#pragma 文は、コンパイラ固有の指定を行う手段として ISO/JIS/ANSI 規格で定められています。
#pragma 文の構文は、コンパイラによって異なります。
定義されていない構文を使用してもエラーになることはなく無視されるとは思いますが
そこは、コンパイラ次第だとおもいます。

今回は、Visual Studioで行った場合について書いていきます。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

バグ:CSVなどの文字を解析

Posted: 2013年01月21日

文字列解析中(CSV等)に間違えてよく書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    const TCHAR *pszSrc = _T("AAA,BBB,CCC");
    CStringArray aryResult;

    char *pPosition = _tcstok(pszSrc, _T(",");
    while (pPosition != NULL) {
        pPosition = _tcstok(pszSrc, _T(",");
        aryResult.Add(pPosition);
    }

    return 0;
 }

このプログラムにどのように文字列解析処理を間違えていると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

C言語入門(23)デバッグ用コードをリリース版では無効化可能な#ifdef

Posted: 2013年01月17日

#ifdefを使用するとコンパイル時にコンパイル対象化指定することが可能です。
それは、タイトルにも書いていますが
デバッグ用に書いたコードは実際に動作してほしくないため、
#ifdefを用いてその処理をコンパイルコードから除外します。
具体的にはどのように記述するか



カテゴリー: プログラム, 入門 | タグ: , | コメント無し »
Page 6 of 9123456789