Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 26.03.2011, 18:06   #1
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 119
Репутация: 8
По умолчанию Сложить два массива char'ов и не только

В С++ я всё ещё не совсем освоился, в итоге нарываюсь на вот такие проблемы. Выписывал всевозможные кардебалеты и практически каждый раз нарывался на ошибки распределения памяти в результате которых прога пищала об ошибке и быстренько завершалась. >_<
Итак:
Цитата:
...
char *s1,*s2; //Есть два массива
s1="Хочу "; //Задали значение первого массива
s2="единства."; //Задали значение второго массива
func_add(&s1,s2); //процедура добавляет второй массив в конец первого
cout<<s1; //И долгожданный вывод результата
...
1. Кто может быстро накидать кок раз эту самую функцию func_add?
2. Кто подскажет как быстро избавиться от каши в голове по поводу всевозможных указателей и ссылок "*","**","&"?
3. Подвопрос опять же на тему указателей. Внутри такой вот процедуры void bla_bla(char **s,char *c) чтобы обратиться к i-ому элементу массива С нужно написать C[i], но как обратиться к i-ому элементу массива S?
Ksardas13 вне форума   Ответить с цитированием
Старый 26.03.2011, 18:08   #2
profi
ПрофессионалФорумчанин
 
Регистрация: 19.11.2007
Сообщений: 1,022
Репутация: 144
По умолчанию

strcat
profi вне форума   Ответить с цитированием
Старый 26.03.2011, 18:12   #3
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 119
Репутация: 8
По умолчанию

Ооо, няшно))
А если у нас массив чисел?
Ksardas13 вне форума   Ответить с цитированием
Старый 26.03.2011, 20:13   #4
onewho
Участник клуба
 
Регистрация: 29.09.2010
Адрес: С-Пб
Сообщений: 636
Репутация: 86

icq: 3424572
По умолчанию

тогда уже другой разговор.
либо в цикле в конец записывать, либо memcpy или memmove.
если массив динамический и не хватает места - то мучится (или не мучится) с перераспределением памяти
onewho вне форума   Ответить с цитированием
Старый 26.03.2011, 22:46   #5
netrino
Профессионал
 
Аватар для netrino
 
Регистрация: 15.07.2008
Адрес: г. Киев, Украина
Сообщений: 1,933
Репутация: 736
По умолчанию

Для создания строки из разнотипных данных в C++ проще всего воспользоваться средствами stringstream
netrino вне форума   Ответить с цитированием
Старый 27.03.2011, 03:52   #6
pufystyj
Участник клуба
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Адрес: Украина
Сообщений: 585
Репутация: 84

skype: x-enter1
По умолчанию

func_add(char s[], char c[])
{
for (int i = 0; s[i] != '\0';++i)
;
++i;
for (int b = 0;c[b] != 0;++i)
{
s[i] = c[b];
}
}
как вам такая функция? или я не совсем понял, что нужно?
__________________
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума   Ответить с цитированием
Старый 18.06.2017, 23:49   #7
bugaboo
Форумчанин
 
Регистрация: 18.06.2017
Сообщений: 55
Репутация: 10
По умолчанию

все норм посоны вот так складывают:
void sum(char*& c, char*& a, char*& b)
{
size_t i, la, lb;
la = strlen(a);
lb = strlen(b);
c = new char[la + lb + 1];
for (i = 0; i < la + lb; i++)
{
if (i < la)
{
c[i] = a[i];
if (i < lb) c[la + i] = b[i];
}
else if (i >= la * 2) c[i] = b[i - la];
}
c[i] = 0;
}
int main()
{
char* a, b, c;
...
sum(c, a, b);
...
delete[] c;
bugaboo вне форума   Ответить с цитированием
Старый 19.06.2017, 00:30   #8
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,896
Репутация: 1915
По умолчанию

Цитата:
Сообщение от bugaboo Посмотреть сообщение
все норм посоны вот так складывают
За шесть лет уж наверно как-то сложили...
waleri вне форума   Ответить с цитированием
Старый 19.06.2017, 02:07   #9
bugaboo
Форумчанин
 
Регистрация: 18.06.2017
Сообщений: 55
Репутация: 10
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
За шесть лет уж наверно как-то сложили...
В том то и дело, что за 6 лет ничего нормально так и не сложили и приходится изобретать костыли, чтобы не пихать в прогу то, что в ней не нужно.
bugaboo вне форума   Ответить с цитированием
Старый 19.06.2017, 07:44   #10
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,708
Репутация: 2631
По умолчанию

Т.е. strcat и иже с ней, стрингов, стримов не существует? Кстати, ваш код и тот с ошибкой. Советчик...
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MMX сложить два числа gansm Assembler 13 29.10.2010 05:16
как сложить два числа с плавающей точкой forsy Assembler 19 29.03.2010 02:15
Макрос: сложить два числа белочка Microsoft Office Excel 6 23.12.2009 23:02
Сложить два числа и вывести результат на экран We1c0m3 Assembler 2 23.05.2009 11:41
Сложить два числа iwaniwan Win Api 3 23.04.2009 06:27


23:03.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.