2013-05-06 3 views
-3

я имел три полукокса внутри массива, которые содержат 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»

+0

Итак, у вас есть три _characters_ и вы хотите создать их? Или у вас есть три _strings_ и хотите объединить их в одну строку? –

+0

Вы хотите совместить символы в массиве со строкой, где каждый символ разделен пробелом? Или что-то другое? –

ответ

2

вам понадобится еще один байт, чтобы иметь нулевой ограничитель.

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

даст вашему AbC

+2

или просто 'char array [] =" abc ";' – mr5

+1

Ваша строка результата не содержит пробелов по запросу OP. – Fabien

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); 
+0

Помогите объяснить ошибку в моем ответе? –

+0

Вы не указали возвращаемое значение 'malloc'. Это очень плохая практика, даже для «игрушечного» примера », поскольку ОП, похоже, является новичком. – Fabien

+0

Это C.' void * 'может быть переведено на' char * 'без необходимости внесения. Bleh, удалил Пример 'malloc'. Я понимаю, что вы имеете в виду. Он может не выделять память. –

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" */ 
0

Неправильный путь использования strcat. array[0] - это номер char, что означает, что он может содержать только одну букву. Он не может удерживать X1 вместе с «» или X2. Создайте еще один достаточно большой массив символов, а затем вы можете strcat.

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; 
} 
0

Вы можете преобразовать каждый отдельный символ в строку, а затем объединить их.

например.

char c = 'c'; 
    char d = 'd'; 
    string s1(1, c); 
    string s2(1, c); 
    string cd = s1 + s2; 
Смежные вопросы