p处总是输出乱码
#include <stdio.h>
#include <string.h>
char result[1000]={0};
char* mutiply(char*p,char*q)
{
char result[1000];
char*r;
int num1[100]={0},num2[100]={0},num[100]={0},i=0,j=0,N=0,M=0,len=0,k;
N=strlen(p); M=strlen(q);
for(i=0;i<N;i++){
num1[i]=p[N-i-1]-'0';
}
for(i=0;i<M;i++){
num2[i]=q[M-i-1]-'0';
}
for(i=0;i<N;i++){
for(j=0;j<M;j++){
num[i+j]+=num1[i]*num2[j];
}
}
len=N+M;
for(i=0;i<N+M;i++){
if(num[i]>=10){
num[i+1]+=num[i]/10;
num[i]%=10;
}
}
while(num[len]==0){
len--;
}
for(i=len;i>=0;i--){
result[len-i]=num[i]+'0';
}
r=result;
return r;
}
int main()
{
int minus,q=1,num[100]={0},i,n;
char m1[1000]="1",m2[1000];
char *p=0;
scanf("%d",&n);
minus=n;
while(minus>q){
q++;
minus-=q;
}
for(i=2;i<=q;i++){
num[i]=i;
}
for(i=q;minus>0;minus--,i--){
num[i]++;
}
p=m1;
for(i=2;i<=q;i++){
printf("%d ",num[i]);
sprintf(m2,"%d",num[i]);
p=mutiply(p,m2);
}
printf("\n");
printf("%s",p);
return 0;
}