此代码需要获取一个int数字并将其转换为表示该数字的char数组:
例如:
324号
转换为:
比如:
char newstr [6] = {'3','2','4','\0','\0','\0'};
我认为“\0”是空的,对吧?
我的代码怎么了?
另外,我如何将其更改为一个获取int数并返回表示它的char数组的函数?
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
void main ()
{
int value = 324;
char str [6];
char newstr [6];
int pointer, i = 0;
for(i=0; value>0; i++)
{
str[i] = value%10 + '0';
value /=10;
}
str[i] = '\0';
for(i=5; i>-1; i--)
{
if(str[i]!='\0')
{
newstr[pointer] = str[i];
pointer++;
}
}
for (i = 0; i < 6; i++)
{
printf("%d %c\n", i, newstr[i] );
}
printf ("shalom");
}
最佳答案
一个简单的方法应该是调用sprintf()
。
char newstr[6] = {0};
sprintf(newstr, "%d", value);
在您现有的代码中,
str
看起来是LILE {'4', '2', '3', '\0', SomethingRandom, SomethingRandom}
。将其反转并分配给newstr
会使其{SomethingRandom, SomethingRandom, '\0', '3', '2', '4'}
,这绝对不是您想要的。实际上,当newstr
时,您不会指定str[i] == '\0'
,这意味着newstr[2] == SomethingRandom
。