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