![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
chudik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 5.5.2007 Репутация: 0 Всего: 1 |
помогите написать функцию для дублирования строки
например: "боб" -> "боббоб" |
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: нет Всего: 23 |
Посмотри API-функцию lstrcat.
|
|||
|
||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
-------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
adLucem |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 17.4.2007 Где: Украина, Донецк Репутация: нет Всего: 5 |
Дублирование строки с выделением памяти для новой строки.
Так как DuplicateString выделяет память для строки, то не забывайте освобождать ее.
Дублирование строки без выделения памяти для новой строки.
Это сообщение отредактировал(а) adLucem - 5.5.2007, 08:54 |
||||||
|
|||||||
Robin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
если в переменной a достаточно места, почему не просто не скопировать в нее ее саму?
///опередили Это сообщение отредактировал(а) Robin - 5.5.2007, 08:45 |
|||
|
||||
chudik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 5.5.2007 Репутация: 0 Всего: 1 |
Видимо я не так выяснилась, что вы меня не поняли.
Мне нужно по программированию написать функцию которая будет копировать любую введеную строку, а то был просто пример. Тоесть я с клавы ввожу любой текст, а эта функция должна его скопировать. Готовые функции использовать нельзя. функция должна быть написана самостоятельно. |
|||
|
||||
apook |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
В чем проблема? Тебе что нельзя даже подсматривать как сделаны готовые функции. Или вообще нельзя функцию писать? Или она дол жна написаться программрй во время выполнения программы ![]() -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
||||||
|
|||||||
adLucem |
|
||||||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 17.4.2007 Где: Украина, Донецк Репутация: нет Всего: 5 |
![]() Правила форума, которые ВСЕ обязаны соблюдать
По моему вы ошиблись - с такими вопросами нужно обращаться в центр помощи.
Или вы считаете, что форум предназначен для написания для вас лабораторных работ по программированию? Надеюсь вы учтете все вышесказанное в дальнейшем. ![]() Решение.
Забавные варианты (детям до 16 лет использование запрещено ![]()
Только на указателях (с контролем длины вводимой строки).
А кто-нибудь может это сделать менее чем на трех переменных (тип не имеет значения)? Это сообщение отредактировал(а) adLucem - 6.5.2007, 11:52 |
||||||||||||
|
|||||||||||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 2 Всего: 95 |
В качестве дополнения решения от adLucem (если все-таки дублирование строки надо сделать функцией):
Не согласен - пусть учатся с пелёнок ![]() -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
nickless |
|
||||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Чтоб только на указателях? Вот на двух char*-ах ![]()
-------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
||||
|
|||||
adLucem |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 17.4.2007 Где: Украина, Донецк Репутация: нет Всего: 5 |
nickless, зачтено
Немного переработанный код.
Интересно, а еще можно уменьшить количество переменных ![]() Это сообщение отредактировал(а) adLucem - 6.5.2007, 14:30 |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Сложно у вас как-то, ребяты! Аж в глазах рябит.
![]() ![]()
![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
adLucem |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 17.4.2007 Где: Украина, Донецк Репутация: нет Всего: 5 |
Dov, проверяйте ваш код перед публикацией
![]()
И еще - перед тем как упрощать (хотя что именно вы упростили непонятно) знакомтесь со всеми приведенными вариантами, то что вы предлагаете ничем не отличается моего кода, который был предложен как самый простой вариант (кроме использования статического массива и cin). Это сообщение отредактировал(а) adLucem - 7.5.2007, 11:11 |
|||
|
||||
betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
проще всего делать двойной вывод в этом случае ![]() --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
Promitheus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2007 Репутация: 1 Всего: 1 |
Господа, а граммотно ли
Писать через #define жесткое количество элементов, а потом под них динамически память выделять ? Не экономнее ли скажем массив завести ? Или уж тогда с клавы читать количество требуемых элементов, а потом память выделять ? |
|||
|
||||
Promitheus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2007 Репутация: 1 Всего: 1 |
![]() adLucem, я прекрасно понял в чем суть вопроса. Прямого отношения к задаче (помогите написать функцию для дублирования строки) мои замечания не имеют, но косвенно всё же они относятся к и данной задаче в том числе. И я, чтобы не заводить новую тему написал сюда вопрос, сам я так не пишу, и хотел выяснить насколько это целесообразно и может быть есть подводные камни, о которых я не знаю. Ваш тон это ваше личное дело. Я бы так сделал, по-деревенски:
Это сообщение отредактировал(а) Promitheus - 8.5.2007, 12:03 |
|||
|
||||
Promitheus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2007 Репутация: 1 Всего: 1 |
![]() Кардинально оно ничем не отличается от приведенных варинатов, но на мой взгляд оно лаконичнее и все операторы делают то, что должны. В принципе тему можно было закончить, после 3 поста, поскольку функция написана, вывод в поток есть - всё. Но коли уж Вы решили написать еще пару функций, вот я и решил задать Вам вопрос, на который, я так понимаю Вы отказываетесь отвечать ... |
|||
|
||||
adLucem |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 17.4.2007 Где: Украина, Донецк Репутация: нет Всего: 5 |
В данном случае действительно можно использовать статический массив (использование динамической памяти пришло в процессе экспериментов). Но в общем случае вопросы использования #define для задания максимального размера буфера и способа выделения памяти не связаны. |
|||
|
||||
Voldemar2004 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
-------------------- i_i (';') (V) ![]() |
||||
|
|||||
Promitheus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2007 Репутация: 1 Всего: 1 |
adLucem, Всё спасиб. Про то, что такое #define я знаю.
![]() |
|||
|
||||
W4FhLF |
|
||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Конечно, 1 переменная.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||
|
|||||
chudik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 5.5.2007 Репутация: 0 Всего: 1 |
а как сделать так чтобы ваши программы правильно определяли длинну строки? во всех ваших программах строка ситается до пробела после пробела информация не копируется.
![]() |
|||
|
||||
dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 3 Всего: 25 |
Информация копируется до символа '\0', т.е символа с кодом 0.
Пробелы также копируются. |
|||
|
||||
chudik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 5.5.2007 Репутация: 0 Всего: 1 |
но в том то и дело что не в одной из программ пробелы не копируются |
|||
|
||||
dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 3 Всего: 25 |
Borland C++ 3.1
Вывел ad dsa sak ad dsa sakad dsa sak Что абсолюно верно. Пробелы скопировались. Почему вы считаете иначе? |
|||
|
||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 2 Всего: 95 |
Он считает иначе, потому что у тебя строка присваивается жестко, а в предложенных выше вариантов - строка считывается с помощью scanf или cin, которые считывают данные до пробела...
chudik, Все варианты работают правильно, только инициализацию строки надо проводить по другому. Вариант с scanf тебе предложили как наименее геморройный... Формирование строки с пробелом - это уже другая задача... Это сообщение отредактировал(а) ama_kid - 10.5.2007, 13:58 -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
Dronchik |
|
||||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 0 Всего: 37 |
А не легчели сделать...
-------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
||||
|
|||||
Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
Мне кажется, самое простое это то, что я предложил:
![]() Это сообщение отредактировал(а) Voldemar2004 - 11.5.2007, 21:42 -------------------- i_i (';') (V) ![]() |
|||
|
||||
chudik |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 5.5.2007 Репутация: 0 Всего: 1 |
а вы не могли бы закоментировать этот код |
||||
|
|||||
adLucem |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 17.4.2007 Где: Украина, Донецк Репутация: нет Всего: 5 |
Это сообщение отредактировал(а) adLucem - 25.5.2007, 15:53 |
|||
|
||||
adLucem |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 17.4.2007 Где: Украина, Донецк Репутация: нет Всего: 5 |
||||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Конструкция __asm {} является частью языка, поэтому всё в пределах допустимого, никаких доп. средств и извращений я не использовал. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |