バグ:文字列の変換

Posted: 2012年10月29日

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

プログラムプログラム:

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

 int main(int argc, char *argv[])
 {
    CString strSrc = _T("12345");
    int nData = 0;

    // 変換
    nData = _ttoi(strSrc);
    if (nData == 0) {
        // エラー
        return 1;
    }

    return 0;
 }

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



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

バグ:文字列のコピー

Posted: 2012年10月23日

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

プログラムプログラム:

 #include  <stdio.h>
 int main(int argc, char *argv[])
 {
    CString strSrc = _T("12345あいうえおかきくけこ");
    int nDestSize = strSrc.GetLength() + 1;
    TCHAR *pszDest = new TCHAR[nDestSize];

    // 文字列のコピー
    _tcscpy_s(pszDest, nDestSize, strSrc );

    return 0;
 }

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



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

バグ:フォルダの移動

Posted: 2012年10月10日

フォルダを移動する際によく書いてしまうバグを紹介します。

プログラムプログラム:

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

 int main(int argc, char *argv[])
 {
    char *pszDirPath = _T("C:\aaa\bbb\ccc");
    char *pszNewDirPath = _T("D:\aaa\bbb\ddd");

    // フォルダの削除
    if( ::MoveFile(pszDirPath, pszDirPath) == 0 ) {
        return -1;
    }

    return 0;
 }

このプログラムにどのようなフォルダ移動関連のバグがあると思いますか?



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

バグ:フォルダの削除

Posted: 2012年09月11日

フォルダを削除する際によく書いてしまうバグを紹介します。

プログラムプログラム:

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

 int main(int argc, char *argv[])
 {
    char *pszDirPath = _T("C:\aaa\bbb\ccc");

    // 処理

    // フォルダの削除
    if( ::RemoveDirectory(pszDirPath) == 0 ) {
        return -1;
    }

    return 0;
 }

このプログラムにどのようなフォルダ削除関連のバグがあると思いますか?



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

バグ:フォルダの作成

Posted: 2012年08月18日

フォルダを作成する際によく書いてしまうバグを紹介します。

プログラムプログラム:

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

 int main(int argc, char *argv[])
 {
    char *pszDirPath = "C:\aaa\bbb\ccc";

    // フォルダの作成
    if( ::CreateDirectory(pszDirPath, NULL) == 0 ) {
        return -1;
    }

    // 処理

    return 0;
 }

このプログラムにどのようなフォルダ作成関連のバグがあると思いますか?



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

バグ : 一時ファイルの作成

Posted: 2012年08月12日

一時ファイルを作成する際によく書いてしまうバグを紹介します。

プログラムプログラム:

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

 int main(int argc, char *argv[])
 {
    // GetTempPath APIでテンポラリファイル用のディレクトリパスを取得
    char lpszTempPath[MAX_PATH];
    if( ::GetTempPath(MAX_PATH, lpszTempPath) == 0 ) {
        return -1;
    }

    // 一時ファイルの作成
    char lpszTempFileName[MAX_PATH];
    if( ::GetTempFileName(lpszTempPath, "tmp", 1, lpszTempFileName) == 0 ) {
        return -1;
    }

    // 処理

    // 一時ファイルの削除
    ::DeleteFile(lpszTempFileName);

    return 0;
 }

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



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

バグ : パスが決まっているファイルを開く

Posted: 2012年04月04日

パスが決まっているファイルを開くプログラムでよく書いてしまうバグを紹介します。
パスが決まっているファイルとは、
Windowsのファイル(cmd.exe等)や、設定ファイル(???.ini等)

プログラムプログラム:

 #include  <stdio.h>

 int main(int argc, char *argv[])
 {
    char *pstrFilePath = ".setting.ini";
    std::ifstream istream(pstrFilePath, std::ios::in);
    if (istream.fail() == true) {
        // ファイルのオープンに失敗
        return -1;
    }

    // 読み込み処理

    istream.close();

    return 0;
 }

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



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

バグ : ファイルを上書きする

Posted: 2012年03月23日

ファイルを上書きするプログラムでよく書いてしまうバグを紹介します。

プログラムプログラム:

 #include  <stdio.h>

 int main(int argc, char *argv[])
 {
    std::ofstream ostream(argv[1], std::ios::out);
    if (ostream.fail() == true) {
        // ファイルのオープンに失敗
        return -1;
    }

    // 書き込み処理
    for (int nIndex = 1; nIndex < argc; nIndex++) {
        ostream.write(argv[nIndex], strlen(argv[nIndex]));
    }

    ostream.close();

    return 0;
 }

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



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

バグ : ファイルの属性を変更する

Posted: 2011年10月06日

ファイルの属性を変更する際のバグを紹介します。

具体的にファイルの属性とは、
読み取り専用や、隠しファイル、所有者などです。

プログラムプログラム:

 #include  <stdio.h>
 #include  <unistd.h>

 int main(int argc, char *argv[])
 {
    if (access(argv[1], 1) != 0) {
        // ファイルへアクセス権がない、ファイルが存在しない
        return -1;
    }

    SetFileAttributes(argv[1], FILE_ATTRIBUTE_HIDDEN);

    return 0;
 }

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



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

バグ : ファイルに書きこむ

Posted: 2011年09月03日

前回変数がプログラムの説明で出てきましたが
変数って一体何なんでしょうか?

変数と聞いて数学の変数を思い出す方もいるのではないでしょうか。
大まかなイメージは同じですが全く同じ物と思っていると、
泥沼に突っ込んでしまうので気をつけてください。

Wikipedia
変数 (数学)
変数 (プログラミング)

プログラミングの変数とは、
よく言われる喩えは、データを入れる箱(領域)です。
どういうことか以下のプログラムを見てください。

プログラムプログラム:

 #include  <stdio.h>

 int main(void)
 {
     int nResult = 0;
     nResult = 2;
     nResult = nResult * 5 + 3;
     nResult = nResult * -1;

     return 0;
 }



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