C:将int []转换为字符串
从技术上讲,我意识到它们有点不同,因为数组是null终止的。但是寻找一种方式来C:将int []转换为字符串
int charArray[] = {'h', 'e', 'l', 'l', 'o'}; //ascii chars = ints
转换为
char *string;
由于charArray
不是字符串,则无法使用标准功能,如strcpy()
,或strlen()
。相反,复制每个字符,并在最后添加'\0'
。 sizeof(charArray)/sizeof(int)
可以告诉你要复制多少个字符。
size_t sz = sizeof(charArray)/sizeof(int);
char *string = malloc(sz + 1);
for (int i = 0; i < sz; i++)
{
string[i] = charArray[i];
}
string[sz] = '\0';
嗯,如果我想把这个分解成一个函数,你会如何建议我传入charArray [i]? – Live2Enjoy7
@ Live2Enjoy7将数组作为函数参数传递时要小心,因为它会转换为指针,因此'sizeof'会给出指针的大小而不是数组。你可以考虑把数组的大小作为另一个参数传递,比如'func(int array [],size_t size)' –
不幸的是编译器抱怨字符串[i] = charArray [i]说预期表达式 – Live2Enjoy7
不能在c
int[]
和char *
之间的转换。您可以遍历数组,然后使用所需值构建一个char*
,但是,然后将\0
添加到最后。您也可以使用(char*) charArray
进行类型转换,但这很容易出现很多问题,比如缺少\0
终止符。例如,它不适用于strcpy
。
charArray
是int[8]
型,其中作为string
是char *
型的。他们是不同的和不兼容的类型,你不能将一个转换成另一个。你可以做的是定义一个足够大小的字符数组,然后将charArray
中的整数(隐式转换为char
类型)复制到它中。
// length of charArray
int length = sizeof charArray/sizeof charArray[0];
char string[length + 1]; // +1 for the null byte
for(int i = 0; i < length; i++)
string[i] = charArray[i]; // copy the characters
string[i] = '\0'; // add the terminating null byte
对数组值使用'{}'而不是'[]'。 –
张贴我的答案后,现在我真的怀疑你的'int'是一个错字。毕竟,该变量有一个名字'charArray'。 –
Yu,在这里处理ASCII字符,所以底层整数... – Live2Enjoy7