一个菜鸡的做题提问关于字符数组的应用

需要把结果用字符串输出,怎么改动呢

题目:编写程序,输入一个长整型数,将其转换为十六进制,以字符串形式输出。(提示:可以定义char s[]="0123456789ABCDEF"以帮助输出十六进制字符)。

#include<stdio.h>
int main()
{
long int n, m = 0, i = 0;
char s[] = "0123456789ABCDEF";
scanf_s("%d", &n);
if (n < 16)
{
printf("%c",s[n]);
}
else
{
m = (n - n % 16) / 16;
i = n % 16;
printf("%d%c", m, s[i]);

    }
       return 0;
}
显示样例输出错误
我的解答思路和尝试过的方法

我想再建立一个字符数组,把m,s[i]存进去,然后输出这个新字符数组,但是失败了
怎么解决呢

仅供参考!

img


#include<stdio.h>

char *fun( long n)
{
    static char buf[20];
    sprintf(buf,"%LX\n",n);
    return buf;
}

int main(int argc, char *argv[])
{
    long n;
    scanf("%ld",&n);
    printf("%s",fun(n));
    return 0;
}