Вопрос № 173077: Здраствуйте, Подскажите пожалуйста как можно скопировать содержимое одной строки в другую, начиная с пятого символа исходной строки т.е. если есть строка "stroka123456" то как во вторую строку скопировать "a123456" функции memc...
Вопрос № 173077:
Здраствуйте, Подскажите пожалуйста как можно скопировать содержимое одной строки в другую, начиная с пятого символа исходной строки т.е. если есть строка "stroka123456" то как во вторую строку скопировать "a123456" функции memcpy и strcpy копируют от начала строки как я понел :( Заранее спасибо. С Уважением, Станислав.
Отвечает Калеев Владимир Викторович, 6-й класс :
Здравствуйте, Станислав. Я так понимаю из вашего вопроса, строка в программе объявлена примерно в таком виде
Код:
char str[100];
тогда вам следует воспользоваться функцией
Код:
char *strcpy (char *dst, const char *src);
Т.е. чтобы скопировать всю строку начиная с пятого символа (если считать с нуля), нужно вызвать ее в таком виде
Код:
strcpy (str2, &str[5]);
причем строка str2 должна быть заранее объявлена. В данном случае с помощью оператора & (взятие адреса), получаем адрес пятого символа (опять же, если считать от нуля) и передаем его в качестве аргумента функции копирования строки. Также в качестве индекса может использоваться не только константа, но и целочисленная переменная. Если же вам будет необходимо производить копирование
не до конца строки то воспользуйтесь функцией strncpy. Данный способ подходит только в том случае если вы оперируете С-строками, то есть строками объявленными как массивы символов.
#thank 255186
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Dr_Andrew, Модератор :
Здравствуйте, Станислав! Раз Вы программируете в Visual C++, который поддерживает STL, начиная ещё с 6-й версии (а уж современные выпуски Visual Studio - тем более), то гораздо удобнее пользоваться не строкой в виде массива символов, а объектом класса string; тогда Вы для копирования подстроки Вы легко можете воспользоваться методом substr класса:
Ответ отправил: Dr_Andrew, Модератор
Ответ отправлен: 09.10.2009, 08:17 Казахстан, Алма-Ата Организация: Казахский научный центр карантинных и зоонозных инфекций Адрес сайта:Медицинские программы для Linux ICQ # 256452186
Оценка ответа: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 255190
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Максим Юрьевич, 6-й класс :
Здравствуйте, Станислав.
Понимая, что имя строки является указателем на её начало, можем передать в функцию strcpy сразу указатель на её 5-й элемент. Т. е. имя_строки + 5 и есть строка, начинающаяся с 5-го символа. Для иллюстрации привожу код.
Приложение:
Ответ отправил: Максим Юрьевич, 6-й класс
Ответ отправлен: 09.10.2009, 11:10
Оценка ответа: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 255196
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.