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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2017, 20:31   #1
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию Скопировать подстроку

Добрый вечер, форумчане.

Столкнулся с такой задачей - нужно из строки *src в строку *dest скопировать подстроку с n-ого символа (пусть будет явная тройка) до сепаратора (пусть будет пробел).
Решил не совсем красиво, как мне кажется.

Код:
void take_substr(char *src, char *dest)
{  
    int i;  
    char *new_src = src + 3;

    for ( i = 0; new_src[i] != ' '; i++)
        dest[i] = new_src[i];
}
Как обойтись без переменной new_src?
Может есть способ изящнее (библиотечная функция), без плясок с for?

Заранее спасибо
Bayern_M вне форума Ответить с цитированием
Старый 12.10.2017, 23:21   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию



47.png
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.10.2017, 08:30   #3
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию

Strncpy копирует строго n байт, а я не знаю когда у меня встретится сепаратор.
Bayern_M вне форума Ответить с цитированием
Старый 13.10.2017, 09:40   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от Bayern_M Посмотреть сообщение
Strncpy копирует строго n байт, а я не знаю когда у меня встретится сепаратор.
Безымянный.jpg
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.10.2017, 18:55   #5
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию

Спасибо за ценный экскурс по string.h, а то я его вот не видел никогда.
Вопрос был в другом. Что отработает быстрее:

Код:
strncpy(dest, src + 3, strchr(src + 3, ' ') - (src+3) );
Или написанный мною вариант?

Напоминаю, что топик про то, как не заводить лишнюю переменную.

Прошу объяснить нормально или хотя бы скинуть ссылки для чтения.
Bayern_M вне форума Ответить с цитированием
Старый 13.10.2017, 19:15   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от Bayern_M Посмотреть сообщение
Напоминаю, что топик про то, как не заводить лишнюю переменную.
Прошу объяснить нормально или хотя бы скинуть ссылки для чтения.
iagf02mz.jpg
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.10.2017, 19:24   #7
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию

ЧСВ своё угомони, Вася))
Bayern_M вне форума Ответить с цитированием
Старый 13.10.2017, 19:29   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от Bayern_M Посмотреть сообщение
ЧСВ своё угомони, Вася))
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 14.10.2017, 08:06   #9
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Примите как данность, ваш велосипед не будет быстрее библиотечной функции в ближайшие 15 лет пользования С++. Потом - возможно, но это уже будет другой велик.
А померять можно штатными средствами - засечь время до и после вызова ф. И не забыть включить опптимизацию -О3, чтобы раскрыть весь потенциал.
alexzk вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подстроку из строки kostya67 C# (си шарп) 1 15.09.2014 19:33
Удалить подстроку из строки с++ Voxa7 Помощь студентам 0 09.11.2011 20:34
Выделить подстроку Jeniuz Общие вопросы C/C++ 1 04.12.2009 18:25
Вывести подстроку из строки Mashul'ka Помощь студентам 1 13.05.2009 22:17
удалить подстроку в VBA AnnNet Помощь студентам 1 19.01.2009 16:59