4-1 strrindex.c

わりと読めるまま短く出来たとは思うけれど。
やはりありきたりというか何というか。

/*
 * P86 演習4-1
 *   sにおけるtの最も右側の出現位置を返す関数strrindex(s, t)
 *   を書け。
 *
 *       2007/09/12 arikui
 *
 */

#include <string.h>

int strrindex(char *s, char *t){
    int i, j, k;
    
    for(i = strlen(s) - 1, j = strlen(t) - 1; i >= 0 && j >= 0; i--){
        for(k = 0; i - k >= 0; k++){
            if (s[i - k] != t[j - k]) break;
            if ((j - k) == 0) return (i - k);
        }
    }
    
    return -1;
}




//Test Driver
#include <stdio.h>

int main(void){
    int i;
    char test[] = "abcdefghij";
    char sub[] = "ghi";
    
    for(i = 0; test[i] != '\0'; i++) putchar(i + '0');
    putchar('\n');
    puts(test);
    putchar('\n');
    
    printf("strrindex(%s, %s) = %d\n", test, sub, strrindex(test, sub));
    
    return 0;
}