一道c语言题,求教!不用写主函数,帮忙写出这个子函数就行!

以指针方式,通过子函数实现。定义一个子函数,函数原型为char * substr(char *str, char *sub, int begin, int end ),功能:在字符串str中求一个字串,起始位置为begin,终止位置为end,内容存入subsub所指的空间中。成功则返回指向sub的指针,失败则返回NULL。假设begin>end,或者begin>=strlen(str),则求子串失败,返回NULL。假设end>strlen(str),则将begin位置后面的字符全部拷入到sub中,并返回指向sub 的指针。字符串的下标从0开始,即begin可以为0。

下面是一个实现,供参考:

#include <stdio.h>
#include <string.h>

char * substr(char *str,char *sub,int begin,int end){
    
// 如果起始位置大于结束位置,或者起始位置大于字符串的最大字符位置(不含字符串结尾的空字符),或者起始位置小于0,则返回NULL 
    if(begin>end||begin>=strlen(str)||begin<0){
        return     NULL;
    }
    
    int i,j=0;
    if(end>strlen(str)){ // 如果结束位置超过字符串结尾的空字符 
        
        for(i=begin;str[i]!='\0';i++,j++){ // 复制从起始位置到字符串str最后一个字符位置结束 
            sub[j]=str[i];
        }
        sub[j]='\0'; // 补上字符串结尾的空字符 
        
    }else{  // 果结束位置没有超过字符串结尾的空字符 
        
        for(i=begin;i<=end;i++,j++){ // 复制从起始位置到结束位置结束 
            sub[j]=str[i];
        }
        sub[j]='\0'; // 补上字符串结尾的空字符         
    }
    
    return sub;
}

int main(void){
    
    char str[100];
    printf("请输入一个字符串:");
    gets(str);
    
    int begin,end;
    printf("请输入要截取字符串的起始位置和结束位置:");
    scanf("%d %d",&begin,&end);
    
    char sub[100];
    char * result= substr(str,sub,begin,end);
    if(result==NULL){
        printf("截取字符串失败!\n"); 
    }else{
        printf("截取的字符串为:%s\n",result);
    }
    
    return 0;
}

img