Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Функція strcpy

КОПІЮВАННЯ РЯДКІВ

ВИЗНАЧЕННЯ ДОВЖИНИ РЯДКІВ

Дуже часто при роботі з рядками необхідно знати, скільки символів містить рядок. Для з'ясування інформації про довжину рядка в заголовному файлі string.h описана функція strlen. Синтаксис цієї функції має вигляд:

size_t strlen ( const char* string ) ;

Дана функція як єдиний параметр приймає вказівник на початок рядка string, обчислює кількість символів рядка й повертає отримане беззнакове ціле число (size_t). Функція sizeof повертає значення на одиницю менше, чим приділяється під масив через резервування місця для символу '\0'. Наступний фрагмент демонструє використання функції strlen:

char S [ ] = "0123456789" ;

int i = strlen ( S ) ;

char S [20] = "0123456789" ; // оголошення й ініціалізація рядка довжиною 19 символів

cout << "Lenght=" << strlen ( S ) << '\n' ; // вивід на екран Lenght=10

cout << "Size =" << sizeof ( S ) << '\n' ; // вивід на екран Size =20

Часто функція sizeof використовується при введенні рядків як другого параметра конструкції cin.getline, що робить код більш універсальним, тому що не потрібно явної вказівки числа символів, що вводяться. Якщо тепер буде потрібно змінити розмір символьного масиву, досить модифікувати лише одне число при оголошенні рядка символів:

char S [20] ; // оголошення рядка довжиною 19 символів

cin.getline ( S, sizeof ( S ) ) ; // уведення рядка довжиною не більш 19 символів із клавіатури

Значення рядків можуть копіюватися з одного в інший. Для цієї мети використовують ряд стандартних функцій, описуваних нижче.

Функція strcpy має прототип:

char* strcpy ( char* str1, const char* str2 ) ;

і виконує побайтне копіювання символів з рядка, на який вказує str2, у рядок по вказівникові str1. Копіювання припиняється тільки у випадку досягнення нуль-термінатора рядка str2, тому перед копіюванням необхідно впевнитися, що довжина str2 менше або дорівнює довжині str1. А якщо ні, то можливе виникнення помилок, пов'язаних з накладенням даних.

Наприклад фрагмент, що випливає, копіює в рядок S значення рядка "String copy":

char S [21] ; // оголошення рядка довжиною 20 символів

strcpy (S, "String copy" ) ; // копіювання рядка "String copy" у рядок S

cout<<S<<'\n' ; // вивід на екран рядка S

Можна робити копіювання не всього рядка, а лише окремого її фрагмента ( до кінця рядка). При цьому другий параметр є вказівником на деякий елемент строкового масиву. Необхідно мати через, що ідентифікатор рядка фактично є вказівником на початок рядка. Наприклад фрагмент, що випливає, скопіює в str2 закінчення рядка str1:

char S1 [21] = "String copy" ; // оголошення й ініціалізація рядка довжиною 20 символів

char S2 [21] ; // оголошення рядка довжиною 20 символів

char* ps = S1 ; // оголошення вказівника на символ і

// його ініціалізація адресою початку рядка S1

cout << ps << '\n' ; // вивід на екран рядка "String copy"

ps += 7 ; // збільшення адреси ps на 7 байт

cout << ps << '\n' ; // вивід на екран рядка "copy"

strcpy (S2, ps ) ; // копіювання рядка "copy" у рядок S2

cout << S2 <<'\n'; // вивід на екран рядка "copy"


Читайте також:

  1. Бюджетування як функція фінансового контролінгу
  2. Виробництво та виробнича функція
  3. Виробництво та виробнича функція
  4. Виробнича функція з двома змінними факторами
  5. Виробнича функція з двома змінними факторами
  6. Виробнича функція з одним змінним фактором
  7. Виробнича функція з одним змінним фактором
  8. Гамма-функція
  9. Гіпофункція нейрогіпофіза
  10. Двофакторна виробнича функція
  11. Двофакторна виробнича функція.
  12. Державне регулювання як головна функція державного управління економікою, його форми й методи




Переглядів: 550

<== попередня сторінка | наступна сторінка ==>
ОПЕРАЦІЇ З РЯДКАМИ | Функція strсat

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.004 сек.