我在数组中有三个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”
这样的结果答案 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;