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

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

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



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

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

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

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



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

バグ:文字列を返却する関数

Posted: 2013年03月11日

文字列の返却する関数処理でよく書いてしまうバグを紹介します。
最近よくある話題ですが
処理としては問題ないけど、それで大丈夫?なコードです。

プログラムプログラム:

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

 CString GetLoginUserName()
 {
  CString strUserName;

  // 処理

  return strUserName;
 }

 int main(int argc, char *argv[])
 {
    CString strUserName = GetLoginUserName();

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

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



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

C言語入門(25) 知らないで使用していた#include、知らなくても使える #include

Posted: 2013年01月31日

今回はおなじみ#includeについて記述していきます。
#include文では、.h(ヘッダー)定義を参照することができます。
参照することで.hに記述されている関数を呼び出すことが可能になります。

タイトル通りですが
知らなくても問題はなく、知っていると評価される豆知識的なことを書いていきます。



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

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

Posted: 2013年01月28日

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

プログラムプログラム:

 #include <stdio.h>

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

    strSrc.Trim();

    // 処理

    return 0;
 }

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



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