#include <stdio.h>
#include <string.h>
int main() {
int s3[] = { 97, 115, 100, 102, 103, 49, 50, 51, 37, 36, 33 };
// make sure s3 does not contain values above 127 (or 255 depending on
// your platform).
// temporary storage for the null terminated string
char temp[100]; // must make sure s3 has no more than 99 elements
// copy the values in s3 to temp as chars
int i;
for (i = 0; i < sizeof(s3)/sizeof(int) ; i++)
{
temp[i] = s3[i];
}
// null terminate
temp[i] = 0;
// now we can print it with `printf` and `%s` because
// now `temp` is a null terminated string.
printf("%s\n", temp);
}
2条答案
按热度按时间dgsult0t1#
在循环中逐项复制数组,并将每个值存储到
char
中。然后用null终止该char
数组,使其成为字符串。或者也可以不将s3
声明为int
。mklgxw1f2#
你想要这样的东西:
sizeof(s3)
是s3
数组的大小(以字节为单位),sizeof(int)
是int
的大小,因此sizeof(s3)/sizeof(int)
是s3
数组中的元素数。进阶知识(略高于初级):
sizeof(s3)/sizeof(*s3)
,这样更简洁,因为我们不需要重复int
类型。malloc
动态分配内存,而不是使用固定大小的char temp[100];
,大小为sizeof(s3)/sizeof(*s3) + 1
(对于空终止符为+1)。char temp[sizeof(s3)/sizeof(*s3)+1];