日経BP発行の日経ソフトウェア2006年6月号(2006年4月25日発売)に拙著の下記記事が掲載されています。
基本はいつもC言語 最終回(第12回) 卒業制作! CSVファイル処理を実践
この記事のサンプルソースに誤りがありました。
ファイル名cross001.cの下記の行はそこに存在すべきではない誤った行です。この行を除去したものを正しいサンプルソースとします。
for( i=0; i<maxNumberOfColumn; i++ )
{
sumOfAll += sumOfColumn[i];
printf("%d",sumOfColumn[i]);
p = strchr(p,'\0')+1; ←この行
printf(",");
}
問題の有無について §
この行は全く無意味な処理を行っているだけで、サンプル実行には実害が出ていなかったものです。
しかし、全てのケースで無害かというと、そうとは限りません。このコードは、変数pに格納されたポインタ値を先に向かって進めています。その結果、物理的に確保されていないメモリ領域(あるいは読み出し許可が与えられていない物理メモリ領域)にポインタが進んだ場合、そこでOSレベルの例外が発生してプログラムが停止する可能性があり得ます。