2012年8月14日火曜日

strstr 関数

strstr関数です
文字列の中から文字列を検索しポインタを返却
という感じの関数です
GCCでコンパイルしたら警告出ます
const charをcharとして戻り値に入れてるからだと思いますが


char *Strstr(const char *s1, const char *s2) {
    int s1l = 0, s2l = 0;
    int i1 = 0, i2 = 0;

    if (*s1 == '\0') { return(0); }
    if (*s2 == '\0') { return(s1); }

    while(*(s1 + s1l) != '\0') { s1l++; }
    while(*(s2 + s2l) != '\0') { s2l++; }
    if (s1l < s2l)    { return(0); }

    while(*(s1 + i1) != '\0') {

        if (*(s1 + i1) == *(s2 + i2)) {
            i2++;
            if (*(s2 + i2) == '\0') { return(s1 + i1 - i2); }
        } else { i2 = 0; }

        i1++;
    }

    return(0);
}

なお変数型等はcharやintなので
環境に合わせて書き換えてください

0 件のコメント:

コメントを投稿