若键盘输入的字符串比p对应的串大,则输出键盘输入的串,否则输出p对应的串

这个题目不允许使用strlen/strcmp/strcpy/strcat等函数,而且还是使用调用函数比较。我不知道如何传递,如何比较字符串中的首字母。

#include<stdio.h>
#include<string.h>
void sub(char*s,char*q)
{
    char *temp;
        if(s[0]>q[0])
        {
            temp=s;
            s=q;
            q=temp;
            
        }
}

int main()   

{   

    char s[21],*p="hello";

    gets(s);

    sub(s,p);  //缺少参数 

    printf("%s\n",s); 

    return 0;   

}


主函数是已知的,不允许改变,除了缺少参数的哪一行的参数可以改变

运行结果及报错内容 无法进入比较
我的解答思路和尝试过的方法
我想要达到的结果:若键盘输入的字符串比p对应的串大,则输出键盘输入的串,否则输出p对应的串

函数里要用for循环逐个字符进行大小比较


int sub(char*s,char*q)
{
    int i=0;
    while(s[i]!='\0' && q[i]!='\0'){
        if(s[i]>q[i])
        {
            return 1; //大于
            
        }else if(s[i]<q[i]){
            return -1;//小于
        }
        i++;
    }
    if(s[i]!='\0')
        return 1;// 大于
    else if(q[i]!='\0')
        return -1;//小于
    else
        return 0; //等于
    
}