バグ:文字列(ロケール)の比較で予想外の動作となる

Posted: 2013年08月26日

文字列の比較ににより問題となる処理を紹介します。
今回はロケールを考慮した比較を対象としています。

プログラムプログラム:

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

 int main(int argc, char *argv[])
 {
    char *pszSrc = "aaa";

    if (0 < strcmp(pszSrc, "AAA")) {
        // 処理

    }

    return 0;
 }

このプログラムにどのように文字列の比較に問題が存在すると思いますか?



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

バグ:文字列(数値)の比較で予想外の動作となる

Posted: 2013年08月19日

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

プログラムプログラム:

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

 int main(int argc, char *argv[])
 {
    char *pszSrc = "1234";

    if (0 < strcmp(pszSrc, "234")) {
        // 処理

    }

    return 0;
 }

このプログラムにどのように文字列の比較に問題が存在すると思いますか?



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

バグ:ファイルの更新時刻に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年08月05日

ファイルのサイズ取得で書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

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

     // ファイルの最後の位置へ移動しファイルサイズを取得
     long nfileSize = _filelength(fp);

    // 処理

     delete[] pFileData;

    return 0;
 }

このプログラムにどのようにファイルサイズ取得処理にバグが存在すると思いますか?



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

バグ:大きいサイズのファイルを読み込むとエラーになる

Posted: 2013年07月29日

ファイルの読み込み処理プログラムで書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

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

     // ファイルの最後の位置へ移動しファイルサイズを取得
     fseek(fp, 0, SEEK_END);
     long nFileSize = ftell(fp);

     // 先頭から読み込むため移動
     fseek(fp, 0, SEEK_SET);

     char *pFileData = new char[nFileSize];
     fread(pFileData, sizeof(char), nFileSize, fp);

    // 処理

     delete[] pFileData;

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

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



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

バグ:文字列の初期化表示でビルドエラー

Posted: 2013年07月15日

文字列の書式化表示を行うプログラムで書いてしまうバグを紹介します。
ビルド時にエラーとなると思いますが

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    char cSrc = 'a';

    vprintf("%s", cSrc);

    // 処理

    return 0;
 }

このプログラムにどのように文字列の書式表示する処理にバグが存在すると思いますか?



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

バグ:文字列中の文字を正しく判断するためには

Posted: 2013年07月08日

文字の種類を判断するプログラムで書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    char cSrc = 'a';

    // 入力要求
    if (isascii(cSrc) == 0) {
        return;
    }

    // 処理

    return 0;
 }

このプログラムにどのように文字の種類を判断する処理にバグが存在すると思いますか?



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

バグ:文字列の反転をした場合問題ありますか

Posted: 2013年07月02日

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

プログラムプログラム:

 #include <stdio.h>
 #include <string.h>

 int main(int argc, char *argv[])
 {
    const TCHAR *pszSrc = _T("ABCDEF");
    TCHAR *pszRev = _strrev(pszSrc);

    // 処理

    return 0;
 }

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



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

バグ:文字列配列の初期化でゴミが残る

Posted: 2013年06月24日

文字列操作(文字列の初期化)で書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>
 #include <string.h>

 int main(int argc, char *argv[])
 {
    TCHAR strDest[256];
    strset(szDest, NULL);

    // 処理

    return 0;
 }

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



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