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

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 26.03.2011, 18:06   #1
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 119
По умолчанию Сложить два массива 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
По умолчанию

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

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

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

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

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
По умолчанию

все норм посоны вот так складывают:
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
Сообщений: 6,167
По умолчанию

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

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

Т.е. strcat и иже с ней, стрингов, стримов не существует? Кстати, ваш код и тот с ошибкой. Советчик...
p51x вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS