C言語入門(37) 実際にプログラムを読んで理解を深めよう ls編(11)

Posted: 2013年04月25日

前回まで、printstream関数を解説してきました。
今回は同じ表示処理のprintcol関数を解説していきます。



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

バグ:scanfで無限ループ!!簡単に起きるけど対策は・・・

Posted: 2013年04月22日

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

プログラムプログラム:

#include <stdio.h>

int main(void)
{
    int n = 0;
    while (n != -1) {
        puts("input:");
        scanf(" %d", &n);
        printf("result: %dn", n);
    }

    return 0;
}

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



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

C言語入門(36) 実際にプログラムを読んで理解を深めよう ls編(10)

Posted: 2013年04月18日

前回まで、printlong関数を解説してきました。
今回は同じ表示処理のprintstream関数を解説していきます。



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

バグ:おなじみの関数(printf)を使っていたら痛い目に

Posted: 2013年04月15日

文字列操作(書式文字列処理)で書いてしまうバグを紹介します。
有名なものであり、しっかりとした参考書には記載されているとおもいます。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    if (argc <= 2) {
        // 引数が足りない
        return 1;
    }

    printf(argv[1]);

    // 処理

    return 0;
 }

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



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

ビルド環境を整える

Posted: 2013年04月14日

ビルド環境の構築には
時間がかかります。

プロジェクトのはじめは、
ある程度できますが、
妥当なものしか出来ません(個人的なイメージ)

また、プロジェクト中盤から
構築をすると(途中参加した場合など)
ビルド順などをドキュメント化されていなければ構築することはできず
また、ドキュメント化する余裕がないことが多かったりします。

ビルド環境や、成果物の管理などを行なってくれるシステムは
下記のシステムが存在します。

  • TFS(Team Foundation Server)
  • Jenkins(旧Hudson)

TFSは、Microsoftが販売しているソフトウェアで
値段も高いため、プロジェクトに採用する場合敷居が高い場合があります。
(すでにMSDNなど契約している場合は、値段を着にせず導入可能ですが)

個人レベルでも導入可能なJenkinsを用いて
環境構築を挑んでいきたいと思います。

Jenkinsは、無料であり様々なプラットフォームにインストール可能です。
それは、JenkinsがJavaで構築されているからかもしれませんが・・・



カテゴリー: 開発環境 | タグ: , , | ビルド環境を整える はコメントを受け付けていません。

C言語入門(35) 実際にプログラムを読んで理解を深めよう ls編(9)

Posted: 2013年04月11日

前回は、printlong関数を解説してきました。
今回はprintlong関数がアクセスコントロール(ACL)属性取得処理に用いている各種aclmode関数を解説していきます。



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

バグ:文字列の連結

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

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



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

C言語入門(34) 実際にプログラムを読んで理解を深めよう ls編(8)

Posted: 2013年04月04日

前回は、printlong関数を解説してきました。
今回はprintlong関数が表示処理に用いている各種print**関数を解説していきます。



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

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

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

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



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

C言語入門(33) 実際にプログラムを読んで理解を深めよう ls編(7)

Posted: 2013年03月28日

前回は、colortype関数を解説してきました。
今回はprintaname関数が表示処理に用いているprintlong関数を解説していきます。



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