![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 19.08.2012
Сообщений: 2
|
![]()
Доброго времени суток!
Вот моя реализация функции strcpy. Вроде работает. Такое решение имеет место быть или здесь что-то не так? Код:
Аналогичный вопрос с функцией strcat. Код:
|
![]() |
![]() |
![]() |
#2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 19.08.2012
Сообщений: 2
|
![]()
Я чайник совсем, поэтому прошу простить за идиотский вопрос: а как выделяется память? И под что она тут должна выделяться? Если я захочу использовать функцию mystrcpy(s1, "Hello!"), предварительно объявив массив char s1[80], например, разве память под массив не выделится автоматически?
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]() |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
Виталий, ни та, ни та функция не выделяют память.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Просто допустим я прошляпничал и для second выделил мало памяти для копирования строки - получается функция залезет на чужую территорию. Я бы лучше так не делал, я бы выделял память внутри функций, и возвращал указатель на совсем новую строку, не трогая исходные.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#7 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]() Цитата:
А вот в вашем варианте кто будет освобождать память? Уж тогда лучше передавать размера обоих буферов, правда тогда выходит на первый план проблема в каких единицах размер буферов - в байтах или в символах. |
|
![]() |
![]() |
![]() |
#9 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
![]() Как мне кажется лучше пойти в сторону безопасного кодирования. Цитата:
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#10 |
Изучающий C и ASM
Пользователь
Регистрация: 25.05.2012
Сообщений: 89
|
![]()
По поводу самого первого топика: где проверка размера передаваемых массивов в явном виде?
Почитай книгу "Программированию боевого софта под Linux", там подробно расписаны шаманства с буфером, в том числе, как избежать переполнения буфера. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
strcat,strcpy | Акоб | Общие вопросы C/C++ | 15 | 24.04.2011 23:58 |
Реализация функции strcat. | KOPC1886 | Помощь студентам | 2 | 25.01.2011 17:48 |
Моя strcat | Valter | Общие вопросы C/C++ | 5 | 12.02.2010 00:30 |
strcat | larry | Win Api | 3 | 20.07.2009 12:44 |
не работает strcat(),strcpy() | MeGaTpoH | Общие вопросы C/C++ | 5 | 25.01.2009 17:31 |