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

Posted: 2013年04月18日

前回まで、printlong関数を解説してきました。
今回は同じ表示処理のprintstream関数を解説していきます。



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

バグ:おなじみの関数(printf)を使っていたら痛い目に

Posted: 2013年04月15日

文字列操作(書式文字列処理)で書いてしまうバグを紹介します。
有名なものであり、しっかりとした参考書には記載されているとおもいます。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    if (argc <= 2) {
        // 引数が足りない
        return 1;
    }

    printf(argv[1]);

    // 処理

    return 0;
 }

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



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

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

Posted: 2013年04月11日

前回は、printlong関数を解説してきました。
今回はprintlong関数がアクセスコントロール(ACL)属性取得処理に用いている各種aclmode関数を解説していきます。



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

バグ:文字列の連結

Posted: 2013年04月08日

文字列操作(文字列の連結)でよくあるバグを紹介します。
定番であるため、あるため様々な対策が行われているので
発生しづらい項目
新人研修で作成したプログラムには作りこんでしまうかもくらいなもの

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    TCHAR szData[16];

    for (int nIndex=1; nIndex < 16; nIndex++) {
        _tcsncat(szData, _T("ABC"), 3);
    }

    // 処理

    return 0;
 }

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



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

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

Posted: 2013年04月04日

前回は、printlong関数を解説してきました。
今回はprintlong関数が表示処理に用いている各種print**関数を解説していきます。



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

バグ:文字列から数値に変換

Posted: 2013年04月01日

文字列操作(文字列から数値に変換)で気が付かずに書いてしまうバグを紹介します。
前も似たようなことは書いた気もしますが
2度書いても、忘れてしまうことなため!!

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    CString strNumber;

    strNumber.Format(_T("%3d"), 100);
    int nNum = _tcstol(strNumber);

    // 処理

    return 0;
 }

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



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

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

Posted: 2013年03月28日

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



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

バグ:環境変数が含まれる文字列の扱い

Posted: 2013年03月25日

文字列中に環境変数が存在する文字列の扱い方を間違えてよく書いてしまうバグを紹介します。
通常は、気が付くレベルの問題のため
そこまで深刻な問題にはならないですが取り上げます。

プログラムプログラム:

 #include <stdio.h>
 $include <winbase.h>

 int main(int argc, char *argv[])
 {
    const TCHAR *pszSrc = _T("%PROGRAMFILES%Microsoft");
    TCHAR szExpandPath[MAX_PATH];
    DWORD nExpandPathSize = sizeof(szExpandPath) / sizeof(TCHAR);

    // 環境変数を展開
    ExpandEnvironmentStrings(pszSrc, szExpandPath, nExpandPathSize);

    // 処理

    return 0;
 }

このプログラムにどのように文字列中に環境変数が存在する文字列の扱い方を間違えていると思いますか?



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

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

Posted: 2013年03月21日

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



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

バグ:ファイルパス文字列の操作

Posted: 2013年03月18日

ファイルパス文字列の操作でよく書いてしまうバグを紹介します。

プログラムプログラム:

 #include  <stdio.h>
 #include <stdlib.h>

 int main(int argc, char *argv[])
 {
    CString strFolderPath = _T("C:WindowsSystem32");
    CString strFileName = _T("cmd.exe");

    // 連結
    CString strCmdPath = strFolderPath + strFilePath;

    // 処理

    return 0;
 }

このプログラムにどのようなファイルパス文字列操作関連のバグがあると思いますか?



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