Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2011, 03:37   #1
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию strcpy

Доброго всем времени суток.
Наткнулся на такую реализацию strcpy
Код:
char *mystrcpy(char *dst, const char *src)
{
    for (; *dst = *src; dst++, src++);
    return dst;
}
собственно вопрос - не понятно почему в итоге dst "стирается". те
Код:
dst="abc";
src="b";
будет b, а не bbc?

Последний раз редактировалось boomeer; 09.10.2011 в 03:40.
boomeer вне форума Ответить с цитированием
Старый 09.10.2011, 06:08   #2
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Строки ограничены символом '\0', который означает конец строки. Этот символ тоже копируется в цикле, а потом происходит проверка на 0 и выход из цикла.
Инициализируя строку в двойных кавычках мы тем самым добавляем символ '\0' в конец строки.
An1ka вне форума Ответить с цитированием
Старый 11.10.2011, 20:28   #3
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от boomeer Посмотреть сообщение
Доброго всем времени суток.
Наткнулся на такую реализацию strcpy
Код:
char *mystrcpy(char *dst, const char *src)
{
    for (; *dst = *src; dst++, src++);
    return dst;
}
собственно вопрос - не понятно почему в итоге dst "стирается". те
Код:
dst="abc";
src="b";
будет b, а не bbc?
У вас проблема в том, что вы из своей функции возвращаете не начальный адрес строки, в которую копируете другую строку, а ее конечный адрес, то есть после ваших итераций и увеличения адреса dst++. Вам надо ввести локальную переменную, допустим char *p = dst; т ее использовать в цикле. Тогда вы вправе можете вернуть из функции указатель dst, так как они сохранил свое исходное значение.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с strcpy() TheWanderer Общие вопросы C/C++ 13 04.07.2013 03:20
strcpy/writeable проблема. coNsept Общие вопросы C/C++ 8 02.09.2011 13:04
strcat,strcpy Акоб Общие вопросы C/C++ 15 24.04.2011 23:58
не работает strcat(),strcpy() MeGaTpoH Общие вопросы C/C++ 5 25.01.2009 17:31
strcpy (visual c++ 6.0) JOFRIF Visual C++ 2 04.08.2008 12:19