バグ:ファイルの更新時刻に2038年問題がある

Posted: 2013年08月14日

ファイルの更新時刻する際によく書いてしまうバグを紹介します。

今回は、64bit環境が前提として記載しています。

プログラムプログラム:

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

 int main(int argc, char *argv[])
 {
     FILE *fp;
     fp = fopen(argv[1],"r");
     if (fp == NULL) {
        // ファイルが開けない
        return 1;
     }

    struct stat sStat;
    fstat(fp, &sStat);

    // 処理

    return 0;
 }

このプログラムにどのようなファイル更新時刻取得のバグがあると思いますか?



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

バグ:浮動点小数を文字列化した際に出るかもしれない問題

Posted: 2013年07月22日

数値の文字列化により問題となる処理を紹介します。

プログラムプログラム:

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

 int main(int argc, char *argv[])
 {
    double nVal = 1.2346789;
    char szVal[16];

    sprintf(szVal, "%lf", nVal);

    // 処理

    return 0;
 }

このプログラムにどのように数値の文字列化処理に問題が存在すると思いますか?



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

バグ:エラーメッセージの取得ではどのAPIを使うべきか

Posted: 2013年06月03日

文字列操作(エラーメッセージの取得)で書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    char szErrorMsg[256];
    int nErrorNo;

    // 処理

    _strerror_s(szErrorMsg, 256, nErrorNo);
    puts(szErrorMsg);

    return 0;
 }

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



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

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

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

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



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

C言語入門(18) 様々な所で使われているポインターの意味 (2)

Posted: 2012年12月13日

前回も様々な種類のポインターを説明来ましたが
今回も同じ内容です。



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

C言語入門(17) 様々な所で使われているポインターの意味

Posted: 2012年12月03日

様々な箇所で使用されているポインターの意味がわかれば
その処理を正しく実装ができる
ポインターをわかっていてもそのポインターの意味するものを間違えると
損している場合もあるのでここで押さえていきたい!!
例えば、FILE*とか
詳しくは把握していないので推論しか書いていませんが・・・



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

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

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

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



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

バグ:フォルダの削除

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

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



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