2015-07-08 3 views
-1

Я пытался создать программу, которая берет два массива и объединяет их для создания новой строки. Это две строки.Объединение двух массивов

char a[8]={"hellostr"}; 
char b[8]={"HELLOSTR"}; 

Может ли кто-нибудь сказать мне, как я мог бы конкатенировать и отобразить эту конкатенированную строку? Я попытался найти его, но не мог понять многое из этого.

+0

что является (являются) 'строка arrays'? –

+0

Я имел в виду два массива, объявленных как строки –

+0

Это не строки. Обратите внимание, что в C, sting - это просто 'char []' с конечным '' \ 0''. Поскольку вы не резервируете достаточно места для этого, это не строка. И: вы не можете _declare_ строку - по той же причине! – Olaf

ответ

3

Вам необходимо использовать функцию strcat() от string.h.

Образец алго:

  1. Определяет массив (скажет destarr[128], например) достаточно большой для хранения результата (конкатенации строки).
  2. memset()destarr до 0.
  3. использование strcat(destarr, a) и strcat(destarr, b) для конкатенации один за другим.

Это говорит,

char a[ ]={"hellostr"}; 

считается лучше и менее подвержены ошибкам над

char a[8]={"hellostr"}; 

, как,

  • В первом случае компилятор берет заряд распределите память по мере необходимости с нулевым терминатором в мин. d. Массив можно использовать как строку .
  • В более позднем случае нет места для нуль-терминатора, и, следовательно, массив не может рассматриваться и не использоваться как строка .
+0

Благодарим вас за этот пример. У меня был еще один вопрос. Теперь, если я хочу отобразить только один из символов этой конкатенированной строки, как мне это сделать? –

+0

Я не согласен с тем, что первое меньше подвержено ошибкам. Потому что, если вы намеревались иметь строку ровно в x символов, вам не нужен код с большим количеством символов, чем для компиляции. Например, прослушиваемый код 'char a [8] = {" hellostr "};' должен давать диагностику компилятора, так что, надеюсь, программист получает пощечину: «Эй, вы не считаете нулевой terminarion! а [8 + 1] «. а не «здесь все выглядит нормально, продолжайте, хотя здесь есть ошибка». – Lundin

+0

@AnamikaAna «Один из символов» - это то, что вы имели в виду именно? используйте индекс, естественно. –

0

strcat функция может быть использована.

Заголовок - string.h

Если вы хотите, чтобы сделать это без strcat функции, то вы можете написать простую функцию -

void concatenate(char a[], char b[]) 
    { 
    int c, d; 

     c = 0; 

    while (a[c] != '\0') 
    { 
     c++;  
    } 

    d = 0; 

    while (b[d] != '\0') 
    { 
     a[c] = b[d]; 
     d++; 
     c++; 
    } 

     a[c] = '\0'; 
    } 
Смежные вопросы