合并数组中的全部元素并将其存储在索引 0 中

标签 c arrays string char

我有一个值数组:

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/

相关文章:

c - ffmpeg 与 CodeBlocks 的链接错误

java - 通过二分搜索查找数组中的位置时遇到问题

javascript - 如何将数组中具有相同属性值的元素作为元素推送到新数组中?

java - Java中的十六进制字符串到二进制

python - 有没有时间 `is` 运算符可以在 Python 中用两个相似的字符串返回 false?

java - 从 JTable 空字符串错误读取信息时出错

c - 为什么在 C 中使用 clone 函数需要这个指针算法?

objective-c - 使用 GCC 编译 *.mm

C - 无法访问用户函数中的全局变量

c++ - 从 C++ 字符串中删除注释