Eukleides project

from http://d.hatena.ne.jp/u5_h/

*[アルゴリズム](文字列)単純な文字列照合

今回から文字列のアルゴリズムについて紹介していきます。
今回は単純な文字列照合のアルゴリズムです。
文字列照合はエディタにおける文字探索やテキストデータベースにおける文字検索に応用されます。
今回はC言語における文字列の添字表現とソースの可読性の低下に着目してみます
まずはソースを

#include
#include
#define SIZE_T 35//検索される文字列の大きさ
#define SIZE_P 5//検索する文字列の大きさ

char text="thequickbrownfoxjumpsoverthelazydog";//被検索対象
char pattern
="quick";//検索する文字
int main(void)
{
int i,j,k;
k=SIZE_T-SIZE_P+1;//検索範囲の設定
for(i=0;i<=k;i++)//弟1ループで検索範囲をみてゆく
{
for(j=0;j

実行結果
./simple
探している文字は4番目

文字列の添字表現がソースの可読性を下げている部分がある。例えば上のソースでいうとelse if(j==SIZE_P-1)や、k=SIZE_T-SIZE_P+1;の部分である。Cの初学者にはわかりにくいが文字列を含む配列の添字は常に0から始まる。
さらに、今回はpascal言語の仕様書に多用されてたgoto文をcontinue文とbreak文で制御し、可読性を向上させた。