-2

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

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

我想将数组内的三个数据组合成一个字符

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

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

我希望得到这样的结果“X1 X2 X3”

4

6 回答 6

3

我认为你的意思是你想将 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);
于 2013-05-06T09:14:10.827 回答
2

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

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

会给你的 abc

于 2013-05-06T09:13:58.090 回答
0

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

于 2013-05-06T09:23:53.567 回答
0

你不能那样做。array只有 3 个字节长,所以你不能有 5+1 = 6 个字节长的字符串“ab c”。而且,当然,您不能调用,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" */
于 2013-05-06T09:16:46.490 回答
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;
}
于 2013-05-06T09:32:58.947 回答
0

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

例如

    char c = 'c';
    char d = 'd';
    string s1(1, c);
    string s2(1, c);
    string cd = s1 + s2;
于 2017-12-05T21:38:21.287 回答