バグ:ファイルパスからファイル名の抜き出し

Posted: 2013年05月27日

文字列操作(ファイルパスからファいうr名を取得する処理)で書いてしまうバグを紹介します。
今回は、独自の方法であり
他の方法で取得することもできます
一例という事で

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    CString strFilePath = _T("C:Temptest.txt");

    int index = strFileName.ReverseFind(_T(""));
    if (index == -1) {
        // 見つからない
        return;
    }
    CString strFileName = strFileName.Mid(index);

    // 処理

    return 0;
 }

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



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

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

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;
 }

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



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

バグ:文字列の連結で問題はありますか?

Posted: 2013年02月18日

文字列操作(連結)で書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

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

    for (int nIndex = 0; nIndex < 100; nIndex++) {
        strSrc.Append(_T("HIJK"));
    }
    // 処理

    return 0;
 }

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



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

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

Posted: 2013年02月11日

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

プログラムプログラム:

 #include <stdio.h>

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

    // 処理

    return 0;
 }

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



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

バグ:Removeでも誤って処理されるならUnicodeで開発すべき?

Posted: 2013年02月04日

文字列操作(文字の削除)で気が付かずに書いてしまうバグを紹介します。

プログラムプログラム:

 #include &lt;stdio.h&gt;

 int main(int argc, char *argv[])
 {
    CString strSrc = _T(&quot;&quot;ABC&quot;DEFG&quot;&quot;); // 全角空白

    strSrc.Remove(_T(&quot;&quot;&quot;));

    // 処理

    return 0;
 }

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



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

バグ:Trimで指定文字が削除されないなんて詐欺に近い

Posted: 2013年01月28日

文字列操作(空白除去等)で気が付かずに書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

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

    strSrc.Trim();

    // 処理

    return 0;
 }

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



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

バグ:CStringのGetBufferを用いて既存の処理と連携する

Posted: 2012年12月24日

CStringのGetBufferでよく書いてしまうバグを紹介します。
Javaなどの言語からC++を使用するようになった時にやりそうなことです。

プログラムプログラム:

 #include <stdio.h>
 #include <Windows.h>

 int main(int argc, char *argv[])
 {
    DWORD dwNameLength;
    CString strName;


    // ユーザ名の取得
    if (GetUserName(strName.GetBuffer(), &amp;dwNameLength) == FALSE) {
        return -1;
    }

    // 処理

    return 0;
 }

このプログラムにどのような指定文字列を抜き出し処理のバグがあると思いますか?



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

バグ:文字列の長さを取得

Posted: 2012年12月17日

文字列から長さを取得する処理でよく書いてしまうバグを紹介します。
実際に最近私がやってしまったバグでも有ります。
わかっていても〜やってしまう・・・
前も同様の内容を記述して記憶はありますが
重要なのでもう一度

プログラムプログラム:

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

 int main(int argc, char *argv[])
 {
    CString strSrc = _T("1234567890");
    const int nLength = strSrc.GetLength();

    // 処理
    printf(_T("%d文字"), nLength);

    return 0;
 }

このプログラムにどのような文字列の長さ取得処理のバグがあると思いますか?



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

バグ:文字列から指定文字列を抜き出し

Posted: 2012年12月06日

文字列から指定文字列を抜き出し処理でよく書いてしまうバグを紹介します。
文字列中から特定の文字列を探し、それ以降の文字列を取得するたぐいの処理です。

プログラムプログラム:

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

 int main(int argc, char *argv[])
 {
    CString strSrc = _T("1234567890");
    CString strDest;

    // 文字列の抜き出し
    int nIndex = szSrc.Find(_T("56"));
    strDest = szSrc.Mid(nIndex); // strDest=567890

    // 処理

    return 0;
 }

このプログラムにどのような指定文字列を抜き出し処理のバグがあると思いますか?



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

バグ:文字列の文字コード変換

Posted: 2012年11月08日

文字列の文字コード変換する際によく書いてしまうバグを紹介します。

プログラムプログラム:

 #include  <stdio.h>
 #include <winnls.h>

 int main(int argc, char *argv[])
 {
    CString strSrc = _T("あいうえお12345");
    WCHAR szDest[128];

    // 変換
    ::MultiByteToWideChar(CP_THREAD_ACP, 0, strSrc, strSrc.GetLength(), szDest, sizeof(szDest));

    //
    // 処理
    //

    return 0;
 }

このプログラムにどのような文字列の文字コード変換関連のバグがあると思いますか?



カテゴリー: バグ, 文字コード | タグ: , , , , | コメント無し »
Page 1 of 212