Реферат Курсовая Конспект
ОБРОБКА ЛІТЕРНИХ РЯДКІВ - раздел Философия, ПРОГРАМУВАННЯ Роботу З Рядками Символів Забезпечують Стандартні Функції. Вс...
|
Роботу з рядками символів забезпечують стандартні функції. Всі вони описані у відповідних файлах з розширенням *.h. Розглянемо деякі найбільш вживані функції.
Функції перевірки і перетворенняописані в файлі ctype.h, вони такі:
-isalpha(c) – перевіряє чи символ с є буквою;
-isdigit(c) – перевіряє чи символ с є цифрою;
-islower(c) – перевіряє чи символ с є малою літерою;
-isprint(c) – перевіряє чи символ с можна видати на друк;
-isspace(c) – перевіряє чи символ с є пробільним символом (пробіл, табуляція або новий рядок);
-isupper(c) – перевіряє чи символ с є прописною буквою;
-isalnum(c) – перевіряє чи символ с є алфавітноцифровим (буква або цифра);
-isascii(c) – перевіряє чи символ с є кодом ASCII (0-127);
-iscntrl(c) – перевіряє чи символ с є керуючим символом;
-ispunct(c) – перевіряє чи символ с є знаком пунктуації;
-toupper(c) – перетворює символ c у прописну букву;
-tolower(c) – перетворює символ c у малу літеру;
Всі функції повертають число 1, тобто true, якщо результати перевірки виявилися успішними. Останні дві – перетворений символ.
Перетворення букви A з прописної у рядкову a подано у прикладі 3.1.
Приклад 3.1 – Перетворення букви A з великої на малу
# include <stdio.h>
# include <ctype.h>
main( )
{
char z, y = 'A';
z = tolower(y);
printf("y = %c z = %cn ",y, z);
}
y = A z = a
Перетворення символьних рядків на числа і навпаки. Іноді доцільно ввести рядок символів, а потім перетворити його на відповідне число. Зрозуміло, що перетворити на число можна не будь-які літери, а лише рядок, який складається з цифр. Для цього служать такі функції:
-atoi(a) – перетворення рядка a на ціле число;
-atof(a) – перетворення рядка a на дійсне число;
-itoa(i, s, d) – перетворення цілого числа i на рядок s. Параметр d визначає систему числення і, якщо вона десяткова, то d = 10.
Описані вони в файлі stdlib.h. Перші дві функції повертають результат перетворення, якщо воно було успішним, інакше – нуль.
Нижче подано приклад 3.2 перетворення двох рядків: 1234 і 12,3 на числа та цілого числа 18 – на рядок.
Приклад 3.2 – Символьно-числові перетворення
# include <stdio.h>
# include <stdlib.h>
main( )
{char s1[9] = "1234", s2[6] = "12.3", s3[3];
int k = 18, n;
float b;
n = atoi(s1); b = atof(s2);
itoa(k, s3, 10);
printf("n = %d b = %f s3 = %sn", n, b, s3);
getch( );
}
n = 1234 b = 12.30 s3 = 18
Функції, що працюють із рядками, описані в файлі string.h. Це, зокрема, такі:
-strlen(s) – повертає довжину, кількість літер рядка s;
-strcat(s1, s2) – додає рядок s1 в кінець рядка s2;
-strncat(s1, s2, n) – додає n літер рядка s1 в кінець рядка s2, повертає новоутворений рядок;
-strcmp(s1, s2) – порівнює вміст рядків s1 i s2. Результатом роботи функції є число, яке від’ємне, якщо коди літер рядка s2 менші за s1, додатнє, якщо більші, і дорівню нулю, якщо коди рівні;
-strcpy(s1, s2) – копіює рядок s2 в s1, повертає рядок s1;
-strdup(s) – дублює масив s, повертає точку входу в новий масив;
-strrev(s) – реверсує всі символи рядка s (змінює порядок розташування літер у рядку на протилежний), повертає новоутворений рядок;
-strchr(s, c) – перевіряє входження символа c в рядок s. Якщо символ не знайдений, то повертає NULL, інакше точку входу;
-strrchr(s, c) – повертає частину, решту рядка s, починаючи з літери c або NULL, якщо символ c не знайдений;
-strstr(s1, s2) – повертає входження рядка s2 в s1 або NULL, якщо входження не відбулося;
-strupr(s) – перетворює всі літери рядка s на великі, повертає новий рядок;
-strerror(i) – текст і-ї помилки, яка виникла під час обробки рядка.
Розглянемо приклад 3.3, де показано застосування декількох функцій.
Приклад 3.3 – Ілюстрація роботи рядкових функцій
# include<stdio.h>
# include<string.h>
int main(void)
{
char s1[5] = "ab", s2[3] = "cd";
char s3[5] = "abcd", s4[4] = "bcd";
char s5[9] = "student", c = 'd', s6[8] = "tude";
printf("1 s1+s2 = %sn", strcat(s1, s2));
printf("2 ds3 = %d ds2 = %dn", strlen(s3), strlen(s2));
printf("3 s1 = %sn", strcpy(s1, s2));
printf("4 s3 = %sn", strstr(s3, s4));
printf("5 chr = %s str = %sn", strchr(s5, c), strstr(s5, s6));
getch( );
return 0;
}
1 s1+s2 = abcd
2 ds3 = 4 ds2 = 2
3 s1 = cd
4 s3 = bcd
5 chr = dent str = tudent
Програма прикладу 3.3 видала такі п’ять рядків результатів:
1 – конкатенація рядків s1 і s2;
2 – довжини рядків s3 і s2;
3 – копіювання рядка s1 в s2;
4 – входження рядка s4 в s3;
5 – входження символа c в рядок s5 та рядка s6 в s5.
Перелік помилок, які виникають під час роботи з літерними функціями, можна прочитати за допомогою програми, поданої в прикладі 3.4.
Приклад 3.4 – Видача текстів помилок
# include<stdio.h> /* Тексти помилок при обробці рядків*/
# include<string.h>
main( )
{int i;
for(i = 1; ; i++)
{printf("num = %d err = %s", i, strerror(i));
if(i % 20 == 0) getch( );
}
}
Нижче показано декілька результатів роботи функції strerror( ).
num = 1 err = Invalid function number
num = 2 err = No such file or directory
num = 3 err = Path not found
num = 4 err = Too many open files
num = 5 err = Permission denied
num = 6 err = Bad file number
num = 7 err = Memory arena trashed
num = 8 err = Not enough memory
num = 9 err = Invalid memory block address
num = 10 err = Invalid environment
num = 11 err = Invalid format
num = 12 err = Invalid access code
– Конец работы –
Эта тема принадлежит разделу:
Івано Франківський національний технічний університет нафти і газу... В М Юрчишин Б В Клим В Б Кропивницька...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: ОБРОБКА ЛІТЕРНИХ РЯДКІВ
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов