我有一个值数组:
array1[] = {1, 32, 4, 12};
我想将其存储为每个值的十六进制表示形式的字符串(格式为“%02x”
):
string = "0120040c";
我可以使用 for
循环打印字符串:
for (int i=0;i<array_size;++i)
printf("%02x", array[i]);
但无法将结果字符串分配给 char 数组。我怎样才能做到这一点?
最佳答案
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *join(int n, char *a[n]){
int i;
size_t lens[n], len=1;
for(i=0;i<n;++i)
len += (lens[i] = strlen(a[i]));
char *cat = malloc(len);
char *p = cat;
for(i=0;i<n;++i){
memcpy(p, a[i], lens[i]+1);
p += lens[i];
}
return cat;
}
int main(void){
char *array1[] = {"a", "p", "p", "l", "e"};
char *string;
int n = sizeof(array1)/sizeof(*array1);
string = join(n, array1);
puts(string);
free(string);
return 0;
}
关于合并数组中的全部元素并将其存储在索引 0 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26799685/