如何将三个char组合成一个

时间:2013-05-06 09:09:00

标签: c arrays strcat

我在数组中有三个char,其中包含X1 X2和X3

char array[3]={X1,X2,X3}

我想将数组中的三个数据组合成一个char

strcat(array[0]," ");
strcat(array[0],array[1]);
strcat(array[0]," ");
strcat(array[0],array[2]);

printf("%s",array[0])

我希望得到像“X1 X2 X3”

这样的结果

6 个答案:

答案 0 :(得分:2)

你需要多一个字节才能有一个空终止符。

char array[4] = { 'a', 'b', 'c', '\0' };
printf( "%s\n", array );

会给你的abc

答案 1 :(得分:2)

我认为你的意思是你要将3个字符连接成一个字符串。

使用足够数组的sprintf

char str[6];
char array[3] = {'l', 'o', 'l'};

// write
sprintf(str, "%c %c %c", array[0], array[1], array[2]);

// print
printf(str);

答案 2 :(得分:0)

你不能这样做。 array只有3个字节长,因此你不能拥有字符串“a b c”,其长度为5 + 1 = 6个字节。当然,您无法拨打strcat(array[0], ...,因为array[0]是一个字符,而不是char *

我不确定你在寻找什么,但如果给你X1,X2和X3并希望它们用空格分隔的字符串,你可以这样做:

void chars2str(char x1, char x2, char x3, char* dest) {
    sprintf(dest, "%c %c %c", x1, x2, x3);
}

当然,dest论证必须足够大或者可能会发生非常讨厌的事情。

char mystr[6];

char2str('a', 'b', 'c', mystr);  /* Now mystr contains "a b c" */

答案 3 :(得分:0)

您使用strcat的方式不正确。 array[0]char,这意味着它只能容纳一个字母。它不能保持X1 以及 a“”或X2。创建另一个足够大的char数组,然后你可以strcat

答案 4 :(得分:0)

#include <stdio.h>

char *join(char *result, const char array[], size_t size, const char sep){
    size_t i,len=0;
    for(i=0;i<size;++i){
        len+=sprintf(result+len, "%c", array[i]);
        if(i < size - 1)
            len+=sprintf(result+len, "%c", sep);
    }
    return result;
}

int main(void){
    const char array[] = { 'x', 'y', 'z'};
    char result[6];

    join(result, array, sizeof(array)/sizeof(char), ' ');
    printf("%s", result);//"x y z"
    return 0;
}

答案 5 :(得分:0)

您可以将每个字符转换为字符串,然后将它们连接起来。

e.g。

    char c = 'c';
    char d = 'd';
    string s1(1, c);
    string s2(1, c);
    string cd = s1 + s2;