c语言pta,大一新手难度

#include <stdio.h>
#define MAXN 10

void f( long int x, char *p );

int main()
{
long int x;
char s[MAXN] = "";

scanf("%ld", &x);
f(x, s);
printf("%s\n", s);

return 0;

}

/* 你的代码将被嵌在这里 */



void f( long int x, char *p )
{
int i=0;
if(x==0)
{
*p='0';
return;
}
if(x<0)
{
x=-x;
p++;
i=1;
}
int a;long int b=x;
while(b!=0)
{
b=b/16;
p++;
}
p++;
*p='\0';
while(x!=0)
{
a=x%16;
if(a<=9)
a=a+48;
else
a=a+55;
p--;
*p=(char)a;
x=x/16;
}
if(i)
{
p--;
*p='-';
}

}

有没有大佬看看,为什么我这样在主函数输出s输出不出来,在void函数里最后行加个printf把p输出出来就可以?

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

函数正常情况下无法结束