|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.03.2011, 17:06 | #1 | |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 120
|
Сложить два массива char'ов и не только
В С++ я всё ещё не совсем освоился, в итоге нарываюсь на вот такие проблемы. Выписывал всевозможные кардебалеты и практически каждый раз нарывался на ошибки распределения памяти в результате которых прога пищала об ошибке и быстренько завершалась. >_<
Итак: Цитата:
2. Кто подскажет как быстро избавиться от каши в голове по поводу всевозможных указателей и ссылок "*","**","&"? 3. Подвопрос опять же на тему указателей. Внутри такой вот процедуры void bla_bla(char **s,char *c) чтобы обратиться к i-ому элементу массива С нужно написать C[i], но как обратиться к i-ому элементу массива S? |
|
26.03.2011, 17:12 | #3 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 120
|
Ооо, няшно))
А если у нас массив чисел? |
26.03.2011, 19:13 | #4 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
тогда уже другой разговор.
либо в цикле в конец записывать, либо memcpy или memmove. если массив динамический и не хватает места - то мучится (или не мучится) с перераспределением памяти |
26.03.2011, 21:46 | #5 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Для создания строки из разнотипных данных в C++ проще всего воспользоваться средствами stringstream
|
27.03.2011, 03:52 | #6 |
Форумчанин
Регистрация: 10.11.2010
Сообщений: 569
|
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]; } } как вам такая функция? или я не совсем понял, что нужно?
Это ещё не конец и даже не начало конца, это возможно только конец начала.
|
18.06.2017, 22:49 | #7 |
Пользователь
Регистрация: 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; |
18.06.2017, 23:30 | #8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
|
19.06.2017, 01:07 | #9 |
Пользователь
Регистрация: 18.06.2017
Сообщений: 55
|
|
19.06.2017, 06:44 | #10 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,758
|
Т.е. strcat и иже с ней, стрингов, стримов не существует? Кстати, ваш код и тот с ошибкой. Советчик...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 22: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 |