Vc++中整数转换成字符串问题

int main(){
int num=12345,j=0,i=0;
char temp[6],str[6];
while(num){
temp[i]=num%10+'0';
i++;
num=num/10;
}
temp[i]=0;
cout<<"temp="<<temp<<endl;
i=i-1;
cout<<"temp="<<i<<endl;
while(i>=0)
{str[j]=temp[i];
j++;
i--;
}
str[j]=0;
cout<<"string="<<str<<endl;
return 0;
}
代码如上,为什么要在string之后和str之后加上
temp[i]=0;
str[j]=0;
不加就不对

第1个回答  2012-07-23
在第一个循环中,i为4的时候,temp[i]=num%10+'0',此时执行完这句,temp[4]的值为‘1’,下面一句进行了一个i++,使得i变成了5.C风格字符串要求一个字符串最后一个字符是以'\0'结尾。你看定义,temp[6],所以应该还有最后一个temp[5]要填充。就是填充这个'\0'.直接赋值为0,我水平有限,不知道是否可以。接下来进行了--i的操作,使得i的值变回了4.下面的循环让str这个字符组我想很好懂,这是倒着赋值给str,最后添加上一个'\0'。