Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: str-функции  (Прочитано 9531 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ZWYHB
Участник

ru
Offline Offline

« : 01-02-2010 09:30 » 

Как записать функции на С, повторяющие действия библиотечной strcpy,strdup,strcat,strlen,strcmp,strlwr,strupr,strset,strchr?
это правильно:
Код:
char *strcpy(char *dst, const char* src) 
{
char *odst = dst;
while(*dst++ = *src++) ;
return odst;
}
char *strdup(const char *src)
{
char *dst = malloc(sizeof(char) * (strlen(src) + 1));
if(dst == NULL) return dst;
return strcpy(dst, src);
}
« Последнее редактирование: 01-02-2010 09:46 от ZWYHB » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 01-02-2010 09:34 » 

эээ... Непонятен вопрос Улыбаюсь

на первый взгляд, все эти перечисленные функции есть в с++, только они с маленькой буквы начинаются



а, или ты просто хочешь написать аналоги ? (про смысл сего не уточняю Отлично )
« Последнее редактирование: 01-02-2010 09:36 от Алексей1153++ » Записан

ZWYHB
Участник

ru
Offline Offline

« Ответ #2 : 01-02-2010 09:44 » 

Ну да - задание написать аналоги этих функций на языке C
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 01-02-2010 09:52 » 

ну, для начала, лучше сделать все функции статическими членами своего класса или пространства имён, чтобы не путать(ся) потом, что ты вызываешь - своё или сишное стандартное.

strcpy у тебя упадёт, если строка-источник будет длинее приёмника.
« Последнее редактирование: 01-02-2010 09:53 от Алексей1153++ » Записан

darkelf
Молодой специалист

ua
Offline Offline

« Ответ #4 : 01-02-2010 10:55 » 

Как записать функции на С, повторяющие действия библиотечной strcpy,strdup,strcat,strlen,strcmp,strlwr,strupr,strset,strchr?
это правильно
...
да, вполне.
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 01-02-2010 12:10 » 

strcpy у тебя упадёт, если строка-источник будет длинее приёмника.
А в strcpy никто и не гарантирует безопасность с т.з. SEG_FAULT Улыбаюсь
У ZWYHB классическая реализация strcpy, все так делают Улыбаюсь
Записан
ZWYHB
Участник

ru
Offline Offline

« Ответ #6 : 01-02-2010 12:44 » 

а как другие записать?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 01-02-2010 17:21 » 

Вад, ага, я уже понял . Но я не признаю такое применение постинкремента ) Ибо сам запутаюсь

У меня так было бы
Код:
//while(*dst++ = *src++)
for(;*src; src++,dst++)
{
    *dst = *src;
}
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 01-02-2010 17:22 » 

а как другие записать?
а ты запиши, а мы потестируем Улыбаюсь
Записан

ZWYHB
Участник

ru
Offline Offline

« Ответ #9 : 01-02-2010 18:34 » 

Цитата
а ты запиши, а мы потестируем
Это не серьёзно! Отлично
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 01-02-2010 18:44 » 

ZWYHB, это очень серьёзно.
Записан

Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 01-02-2010 19:59 » 

ZWYHB, а что тут сложного? Смотришь в документации, что должна делать функция, и реализуешь функцию, делающую то же самое, по своему разумению. Там ошибиться довольно сложно - алгоритмы всё простые. Ведь с копированием не было же проблемы?
В каком месте проблема возникает?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines