数制转换程序的一个小问题?
#include<stdio.h>char *trec(int idec,int ibase)
{
char str[20],t;
int idr,i,p=0;
while(idec!=0)
{
idr=idec%ibase;
if(idr>=10)
str[p++]=idr-10+65;
else
str[p++]=idr+48;
idec/=ibase;
}
for(i=0;i<p/2;i++)
{
t=str[i];
str[i]=str[p-i-1];
str[p-i-1]=t;
}
str[p]='\0';
return str;
}
void main()
{
int x,d;
scanf("%d,%d",&x,&d);
printf("%s\n",trec(x,d));
}
此程序我在vc6.0中运行时结果不对,我单步调试了下,发现是str[20]数组有问题,如果改成str[500],比如输入10,2程序就能运行正确。请问有哪个大侠能跟我解释下这是啥原因?