как склеить несколько char*, интересная загадка №2 |
Здравствуйте, гость ( Вход | Регистрация )
как склеить несколько char*, интересная загадка №2 |
enslaver |
3.10.2011, 8:17
Сообщение
#1
|
Студент Группа: Участник Сообщений: 30 Регистрация: 25.3.2010 Пользователь №: 1565 Спасибо сказали: 0 раз(а) Репутация: 0 |
мы имеем 2 указателя на массив символов
пусть это будет
и
(расписал так для большей наглядности, в действительности они так в самой программе не объявляются.) наша задача не зная длинны этих строк, получить новый указатель: !математически бы который выглядел так! Цитата carh *new; new << argv1 << "/" << argv2; то есть он бы содержал всю или часть 1 строки, потом всю или часть 2 строки и далее всю или часть 3 строки. сам еще не решил данный вопрос, вот хочу узнать ваше мнение, о путях его разрешения. (основная проблема в том что неизвестно какой длинны будет строка, а объявлять новый массив символов большой длинны нежелательно!) |
|
|
Алексей1153 |
3.10.2011, 8:44
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
проще всего так
Есть нюансы, связанные с производительностью, но тебе сейчас вряд ли они помешают Сообщение отредактировал Алексей1153 - 3.10.2011, 13:41 |
|
|
Гость_Гость_enslaver_*_* |
3.10.2011, 13:26
Сообщение
#3
|
Гости |
|
|
|
Алексей1153 |
3.10.2011, 13:40
Сообщение
#4
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
BRE |
3.10.2011, 13:45
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
В стандартной библиотеке C есть семейство функций для работы со строками. Они начинаются на str...: strcpy, strcat, strlen, ...
Вот для решения нужно две функции: strcpy + strcat. |
|
|
Алексей1153 |
3.10.2011, 13:51
Сообщение
#6
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
BRE, это ж надо ещё рассказывать, как объявить массивы, да как с ними осторожно работать )
|
|
|
Dovgon |
3.10.2011, 13:57
Сообщение
#7
|
Студент Группа: Участник Сообщений: 92 Регистрация: 5.1.2011 Пользователь №: 2325 Спасибо сказали: 3 раз(а) Репутация: 0 |
#include <string.h>
char *newStr=strcat(argv1, argv2); |
|
|
enslaver |
3.10.2011, 14:02
Сообщение
#8
|
Студент Группа: Участник Сообщений: 30 Регистрация: 25.3.2010 Пользователь №: 1565 Спасибо сказали: 0 раз(а) Репутация: 0 |
Цитата В стандартной библиотеке C есть семейство функций для работы со строками. Они начинаются на str...: strcpy, strcat, strlen, кто покажет где про эту библиотеку написано... |
|
|
BRE |
3.10.2011, 15:32
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
#include <string.h> char *newStr=strcat(argv1, argv2); А разве argv1 указывает на буфер, в который поместятся еще и символы из argv2? Скорее всего нет и затрем кусок чужой памяти.
кто покажет где про эту библиотеку написано... Интернет или любая книга по C. Сообщение отредактировал BRE - 3.10.2011, 15:32 |
|
|
enslaver |
3.10.2011, 17:55
Сообщение
#10
|
Студент Группа: Участник Сообщений: 30 Регистрация: 25.3.2010 Пользователь №: 1565 Спасибо сказали: 0 раз(а) Репутация: 0 |
char *buf = malloc( len1 + len2 + 1 ); // +1 для завершающего 0 На сколько я знаю malloc уже не используется вмеcто него теперь используют new и delete. Если я неправ то разъясните по этому вопросы, и какую директиву нужно тут использовать, так как у меня при компиляции выдает Цитата ../src/copy.cpp:73:37: ошибка: нет декларации «malloc» в этой области видимости char *buf = malloc( len1 + len2 + 1 ); // +1 для завершающего 0 На сколько я знаю malloc уже не используется вмеcто него теперь используют new и delete. Если я неправ то разъясните по этому вопросы, и какую директиву нужно тут использовать, так как у меня при компиляции выдает Цитата ../src/copy.cpp:73:37: ошибка: нет декларации «malloc» в этой области видимости заработало после подключения stdlib.h
и изменением вашего объявление на
наверно мне стоило раньше сказать но я пишу на C++ |
|
|
Текстовая версия | Сейчас: 27.4.2024, 17:27 |