此代码需要获取一个 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
看起来很简单 {'4', '2', '3', '\0', SomethingRandom, SomethingRandom}
。反转它并分配给 newstr
使其成为 {SomethingRandom, SomethingRandom, '\0', '3', '2', '4'}
,这绝对不是什么你要。事实上,当 str[i] == '\0'
时,您不会分配 newstr
,这意味着 newstr[2] == SomethingRandom
.
关于c - 将 int 转换为 char 数组的函数,一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27678176/