Робота з символьними змінними. Змінні типу char повинні бути описані до їх використання. При описі їх можна задавати.
char a, b, c; char d=’x’; при описі d=’x’; оператор присвоєння
Можна створювати іменовані символічні константи
const char a=’z’; Використовуються одинарні лапки
Приклад програми для виводу змінної c1 в виді числа і в виді символа
printf(«%с», с1); як символ printf(«%d», с1); як число.
Масиви символів (рядки). Опис.Рядки, які є послідовністю символів, задаються масивами символів. Синтаксис опису:char string[10];
В цьому масиві можна зберігати дев’ять символів можна зберігати і менше символів. Чому в асиві, чкий містить 10 елементів, можна зберігати 9 символів.? В мові С рядки визначаються як послідовність символів, що закінчується нульовим символом. Нульовий символ - це спеціальний символ, який позначається \0. Хоч він записується в виді двох знаків (оберненої риски і 0) компілятор сприймає його як один символ, що відповідає коду ASCII ‘0’. Це є спеціальний символ мови С. В чому ж різниця між рядками і масивами символів? По означенню рядок –це послідовність символів з завершуючим символом \0Масив по означенню являє собою послідовність символів. Тому рядок –це масив символів з завершуючим нулем.
Наприклад в рядку
fghhjkg є 7 символів і ще нульовий символ \0 -всього вісім.
Задання символьних масивів.Масиви можуть задаватися при описі.
Char r[10]={‘a’,’b’,’c’,’d’,‘\0’}; але вигідніше використовувати рядкові літерали, тобто послідовності символів в подвійних лапках.
Char r[10]=’’abcd’’;
Кожний раз, коли в програмі використовується рядковий літерал, компілятор автоматично додає нульовий символ в кінець рядка. Якщо при описі і заданні масиву символів опустити його довжину, то компілятор сам порахує довжину масиву по довжині літералу
Char r[]=’’abcd’’; В цьому рядку є масив з 5-ти елементів.
Для роботи з рядками існує бібліотека string.h. Приклади функцій для роботи з.
Функція
| Прототип і короткий опис функції
|
strcmp
| int strcmp(const char *str1, const char *str2);
Порівнює рядки str1 й str2. Якщо str1< str2, то результат від’ємний, якщо str1 = str2, то результат дорівнює 0, якщо str1> str2, то результат додатний.
|
strcpy
| char* strcpy(char*s1, const char *s2);
Копіює рядок s2 у рядок s1
|
strncpy
| char *strncpy(char *s1, const char *s2, int kol);
Копіює kol символів рядка s2 у рядок s1.
|
strlen
| unsigned strlen (const char *str);
Обчислює довжину рядка str.
|
strcat
| char *strcat(char *s1, const char *s2);
Приписує символ рядка s2 до рядка s1.
|
strncat
| char *strncat(char *s1, const char *s2, int kol);
Приписує kol символів рядка s2 до рядка s1.
|
Рядки, при передачі у функцію, в ролі фактичних параметрів можуть бути визначені або як одновимірні масиви типу char[], або як вказівники типу char *. На відміну від звичайних масивів у цьому випадку немає необхідності явно вказувати довжину рядка.