一道C语言函数题。。

      编程实现以下功能

编写funO函数,实现求字符串中最后一次输出 的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值返回NULL。例如,当字符串中内容
为uywxuvsuvwxyz,子字符串的内容为uv时,输出结果应是uywxyz,当子字符串的内容为uyb时,输出未找到: Not found!


#include <stdio.h>
#include <string.h>
char* funO(char str[], char sub[]){
    int n = strlen(str);
    int m = strlen(sub);
    int j=m-1,k;
    for(int i=n-1;i>=0;i--){
        k=i;
        while(str[k]==sub[j]&&k>=0&&j>=0){
            k--;
            j--;
        }
        if(j==-1){
            return str+k+1;
        }
        else{
            j=m-1;
        }
    }
    return NULL;
}
int main(void) {
    char str[]={"uywxuvsuvwxyz"};
    char sub1[]={"uv"};
    char* res = funO(str, sub1);
    if(res==NULL){
        printf("Not found!\n");
    }
    else{
        printf("%s\n",res);
    }
    
    char sub2[]={"uyb"};
    res = funO(str, sub2);
    if(res==NULL){
        printf("Not found!\n");
    }
    else{
        printf("%s\n",res);
    }
    return 0;
}