2 5dc21454 2023-07-14 jrmu * Exercise 4-1. Write the function strrindex(s,t), which returns the position
3 5dc21454 2023-07-14 jrmu * of the rightmost occurrence of t in s, or -1 if there is none.
6 5dc21454 2023-07-14 jrmu #include <stdio.h>
7 5dc21454 2023-07-14 jrmu #include <string.h>
8 5dc21454 2023-07-14 jrmu #define MAXLINE 1000 /* maximum input line length */
10 5dc21454 2023-07-14 jrmu int getlin(char line[], int max);
11 5dc21454 2023-07-14 jrmu int strindex(char source[], char searchfor[]);
12 5dc21454 2023-07-14 jrmu int strrindex(char s[], char t[]);
14 5dc21454 2023-07-14 jrmu char pattern[] = "or"; /* pattern to search for */
16 5dc21454 2023-07-14 jrmu /* find all lines matching pattern */
18 5dc21454 2023-07-14 jrmu int main() {
19 5dc21454 2023-07-14 jrmu char line[MAXLINE];
20 5dc21454 2023-07-14 jrmu int found = 0;
21 5dc21454 2023-07-14 jrmu int index = 0;
23 5dc21454 2023-07-14 jrmu printf("pattern: %s\n", pattern);
24 5dc21454 2023-07-14 jrmu while (getlin(line, MAXLINE) > 0)
25 5dc21454 2023-07-14 jrmu if ((index = strrindex(line, pattern)) >= 0) {
26 5dc21454 2023-07-14 jrmu printf("index: %d, %s", index, line);
29 5dc21454 2023-07-14 jrmu return found;
32 5dc21454 2023-07-14 jrmu /* getlin: get line into s, return length */
33 5dc21454 2023-07-14 jrmu int getlin(char s[], int lim) {
36 5dc21454 2023-07-14 jrmu while (--lim > 0 && (c=getchar()) != EOF && c != '\n')
38 5dc21454 2023-07-14 jrmu if (c == '\n')
40 5dc21454 2023-07-14 jrmu s[i] = '\0';
44 5dc21454 2023-07-14 jrmu /* strindex: return index of t in s, -1 if none */
45 5dc21454 2023-07-14 jrmu int strindex(char s[], char t[]) {
46 5dc21454 2023-07-14 jrmu int i, j, k;
48 5dc21454 2023-07-14 jrmu for (i = 0; s[i] != '\0'; i++) {
49 5dc21454 2023-07-14 jrmu for (j=i, k=0; t[k] != '\0' && s[j] == t[k]; j++, k++)
51 5dc21454 2023-07-14 jrmu if (k > 0 && t[k] == '\0')
57 5dc21454 2023-07-14 jrmu /* strrindex: return index of rightmost t in s, -1 if none */
58 5dc21454 2023-07-14 jrmu int strrindex(char s[], char t[]) {
59 5dc21454 2023-07-14 jrmu int i, j, k;
60 5dc21454 2023-07-14 jrmu for (i = strlen(s)-1; s[i] != '\0'; i--) {
61 5dc21454 2023-07-14 jrmu for (j=i, k=0; t[k] != '\0' && s[j] == t[k]; j++, k++)
63 5dc21454 2023-07-14 jrmu if (k > 0 && t[k] == '\0')