我在数组中有三个字符,其中包含 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”
我认为你的意思是你想将 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);
您将需要多一个字节才能有一个空终止符。
char array[4] = { 'a', 'b', 'c', '\0' };
printf( "%s\n", array );
会给你的 abc
您使用的方式strcat
不正确。array[0]
是 a char
,这意味着它只能容纳一个字母。它不能将 X1与" " 或 X2 一起保存。创建另一个足够大的 char 数组,然后你就可以strcat
了。
你不能那样做。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" */
#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;
}
您可以将每个单独的字符转换为字符串,然后将它们连接起来。
例如
char c = 'c';
char d = 'd';
string s1(1, c);
string s2(1, c);
string cd = s1 + s2;