Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив WinRAR / 2_Посібник_С_002.doc
Скачиваний:
43
Добавлен:
17.05.2015
Размер:
3 Мб
Скачать

8. Рядки в с

Рядки є одним з найбільш корисних та важливих типів даних мови С. Символьний рядок - це масив символів, замкнений у лапки. Він має тип char. Нульовий символ ‘\0’ автоматично додається останнім байтом символьного рядка та виконує роль ознаки його кінця.

Приклад 1. Символьний рядок.

#include <string>

int main (){

char myString[] = "string!";

printf("%s\n", myString);

system("pause");

return 0;

}

Результат роботи програми:

Кількість елементів у масиві дорівнює кількості символів у рядку плюс один, оскільки нульовий символ також є елементом масива. Кожна рядокова константа, навіть у випадку, коли вона ідентична іншій рядоковій константі, зберігається у окремому місці пам'яті. Якщо необхідно ввести у рядок символ лапок, то перед ним треба поставити символ зворотного слешу "\". У рядок можуть бути введені будь-які спеціальні символьні константи, перед якими стоїть символ "\"..

4.1 Прототипи

Прототипи всіх функцій, що працюють з рядками символів, містяться у файлі string.h. Всі функції працюють з рядками, що закінчуються нульовим символом. Деякі з них дивіться у таблиці 4.1.

Таблиця 4.1 – Прототипи функцій

Ім’я функції

Виконання

int strcmp(const char *, const char *);

Лексикографічне порівняння рядків. Повертає < 0 якщо перша стрічка менша за другу; > 0 якщо друга стрічка більша за першу і 0, кщо вони рівні.

int strcat( char *, char *)

З'єднати два рядки(об’єднаний рядок записується у першу змінну, а друга змінна залишається без змін);

int strcpy(char *, char *)

Копіювати рядок s2 у рядок s1(перша змінна дорівнює другій, а друга залишається незмінною);

int strlen(char *)

Визначити довжину рядку (кількість символів без нульового символа).

Приклад 2. Використання прототипів функцій.

#include <string.h>

#include <stdio.h>

#include <stdlib.h>

int main(){

char s1[]="Hello, ";

char s2[]={'w','o','r','l','d','!','\0'};

strcat(s1, s2);

printf("s1:%s s2:%s\n", s1, s2);/*на екран буде виведено:

s1:Hello, world! s2: world!*/

printf("%c\n", s1[4]);//на екран буде виведено літеру o

/*зверніть увагу, що в даному випадку використано %с

замість %s так як виводиться лише 1 символ*/

int len=strlen(s1);/*довжина першого рядка тепер дорівнює

13*/

printf("%i\n", strcmp(s1, s2));/*програма виведе від’ємне

число, так як s1<s2 за

лексикографічним порівнянням.*/

strcpy(s1, s2);

printf("%s %s %i\n", s1, s2, len); /*на екран буде виведено:

world! world! 13*/

system("pause");

}

Результат роботи програми:

4.2 Функції перетворення буферів

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

memcpy() - копіювання символів з одного буфера у другий, поки не буде скопійований заданий символ або не буде скопійовано визначену кількість символів

memcmp() - порівнює вказану кількість символів з двох буферів

Соседние файлы в папке Архив WinRAR