|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.12.2013, 01:12 | #1 |
Новичок
Джуниор
Регистрация: 07.12.2013
Сообщений: 5
|
Соединение 2 масива через for c+
у меня проблема хочу соединить 2 масива пример
char* spoj_retezce(const char* retezec1, const char* retezec2){ int delka1 = strlen(retezec1); int delka2 = strlen(retezec2); char* retezec = (char*) malloc(sizeof(char) * delka1 + delka2); int i ; for (i = 0; i < delka1; i++) { retezec[i] = retezec1[i]; } for (i = 0; i < delka2; i++) { retezec[i] = retezec2[i]; } return retezec; } int main() { printf("%s\n", spoj_retezce("abc", "def")); // abcdef printf("%s\n", spoj_retezce("Anorexia ", "Nervosa")); // Anorexia Nervosa printf("%s\n", spoj_retezce("13", "49")); // 1349 printf("%s\n", spoj_retezce("", "Cradle of Filth")); // Cradle of Filth printf("%s\n", spoj_retezce("Star", " Trek")); // Star Trek printf("%s\n", spoj_retezce("Almost ", "Human")); // Almost Human printf("%s\n", spoj_retezce("", "")); // return 0; } на даный момент мне показывает вот это def Nervosaa GW;C:\PX├Ţ║B░ 49n Cradle of Filthh]├Ţ┐B░ Trek Humant ś8n в чём проблема кто знает ?? |
07.12.2013, 01:28 | #2 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
У вас и в первом цикле retezec[и] = ..., и во втором retezec[и] = , и оба раза и начинается от нуля. То есть повторно заполняете символами те же элементы выходного массива.
И вот тут (sizeof(char) * delka1 + delka2); скобку не пропустили? Хотя для char это наверное не имеет значения. |
07.12.2013, 02:19 | #3 |
Новичок
Джуниор
Регистрация: 07.12.2013
Сообщений: 5
|
int i, k;
for (i = 0; i < delka1 ; i++) { retezec[i] = retezec1[i]; } for (k = i; k < delka2; k++) { retezec[k] = retezec2[k]; } return retezec; } так тоже не чего неполучается пишет abc Anorexia GW;C:\Program F-Î↕*╣* 13g Cradle of Filthm*Î↕¸ż* Stark Almost ś8g Последний раз редактировалось san4er; 07.12.2013 в 02:28. |
07.12.2013, 02:21 | #4 |
Новичок
Джуниор
Регистрация: 07.12.2013
Сообщений: 5
|
пишет первый масив
Последний раз редактировалось san4er; 07.12.2013 в 02:28. |
07.12.2013, 02:31 | #5 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Что, в самом деле так у вас
Код:
Или просто не то вставили И во втором цикле - надо не до длины второго массива, а до суммарной длины. Последний раз редактировалось type_Oleg; 07.12.2013 в 02:33. |
07.12.2013, 03:03 | #6 |
Новичок
Джуниор
Регистрация: 07.12.2013
Сообщений: 5
|
можешь посоветать сумарную длину как сделать
|
07.12.2013, 03:06 | #7 |
Новичок
Джуниор
Регистрация: 07.12.2013
Сообщений: 5
|
я сделал так
int delka1 = strlen(retezec1); int delka2 = strlen(retezec2); int delka3 = strlen(retezec1) + strlen(retezec2); char* retezec; retezec = (char*)malloc(strlen(retezec1) + strlen(retezec2) + 1); int i, k; for (i = 0; i < delka1 ; i++) { retezec[i] = retezec1[i]; } for (k = i; k < delka3; k++) { retezec[k] = retezec2[k]; } return retezec; } пишет abc Anorexia norexiarogram F&°↕Łî´ 13 Cradle of Filthm!°↕Üő´ Stark Almost lmosthare+°↕Éő´ ś8d |
07.12.2013, 04:16 | #8 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Я сам запутался на ночь глядя
Вот так работает: Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оброботка масива.найти елемент масива с указанием его адреса в строке и в столбце | Rokko195 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 20.12.2012 07:22 |
Соединение через интернет (C++ Builder) | badfilin | C++ Builder | 1 | 21.03.2010 21:32 |
Соединение через два NAT | Acharia | C/C++ Сетевое программирование | 8 | 11.09.2009 15:36 |
Dial Up соединение через модем | sato_2005 | Работа с сетью в Delphi | 3 | 16.07.2008 22:00 |
Соединение с БД через Интернет | Kate | Работа с сетью в Delphi | 1 | 08.06.2007 08:49 |