Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Перевірка та перетворення символів




Операції над рядками

Введення-виведення рядків

Розглянемо найбільш розповсюдженні бібліотечні функції gets() та puts().

Функція gets() отримує рядок з буфера клавіатури. Вона зчитує символи до тих пір, поки не зустріне символ нового рядка (‘\n’). Функція бере вcі символи до знака ‘\n’, приєднує до них нуль-символ та передає рядок програмі, що її визиває.

Приклад:

/* отримання імені * /

main ()

{ char name [81]; /* виділення пам'яти*/

printf ("Як вас звуть? \n");

gets(name); /* ім'я поміщується до масиву name */

cout<<”Гарне ім’я”<<name<<”\n”;

Функція puts() виводить рядок символів на консоль виводу, у неї є тільки один аргумент - покажчик на рядок.

Приклад:

void main () {

char str[]=”Приклад”;

puts (str);

}

Для використання наведених далі функцій необхідно додати до програми файл string.h:

#include <string.h>

Таблиця 5.2 – Функції для роботи з рядками

Функція Опис
  char *strcat (st1, st2); char *st1, *st2; Використовується для злиття рядків символів. В результаті st2 заповнюється символами st1 та st2.
  char *strnkat (st1, st2, n); char *st1, *st2; int n; Виконує злиття двох рядків так, що з другого рядка копіює не больш за n символів.
  int strcmp (st1, st2); char *st1, *st2; Порівнює два рядка у лексикографічному порядку. Повертає 0, якщо st1=st2 -1, якщо st1<st2 1, якщо st1>st2  
  int strncmp (st1, st2, n); char *st1, *st2; int n; Порівнює перші n символів двох рядків.
  char *strcpy (st1, st2); char *st1, *st2; Копіює рядок st2 в st1.
  char *strncpy (st1, st2, n); char *st1, *st2; int n; Копіює не більш ніж n символів рядка st2.
  int strlen (str); char *str; Визначає довжину рядка, тобто кількість символів у рядку без завершаючого ‘0’.
  char *strchr (str, c); char *str; int c; Знаходить у вказаному рядку перші входження символа с.
  char *strrchr (str, c); char *str; int c; Знаходить у рядку останнє входження символа с.

 

Продовження таблиці 5.2

  char *strpbrk (st1, st2); char *st1, *st2; Знаходить у рядку st1 деякий із множини символів, що входять до рядка st2.
  char *strspn (st1, st2); char *st1, *st2; Визначає довжину відрізка рядка st1, що містить символи зі множини символів, що входять до рядка st2.
  char *strtok (st1, st2); char *st1, *st2; Виділяє з рядка st1 лексеми, разподілені любим із множини символів, що входять до рядка st2.

Приклад:

/* використання функцій strcat() и strcpy()*/

main ()

{

static char name [80];

static char cpname [80];

static char add [] = “додано до кількості користувачів системи”;

printf(“Вкажіть ваше прізвище.\n”);

gets(name);

strcpy(cpname, name); /*копія прізвища*/

strcat(name, add);

puts(name);

puts(cpname);

puts(add);

}

 

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

Вкажіть ваше прізвище.

Іванов

Іванов додано до кількості користувачів системи

Іванов

додано до кількості користувачів системи

 

Файл ctype.h містить декілька макровизначень, що перевіряють, до якого класу належать символи.

Визначення:

int c;

 

Таблиця 5.3 – Функції перевірки належності символів

Функція Призначення
isalpha (c) перевіряє, чи с є символом літерою
isdigit (c) перевіряє, чи с є символом цифрою
islower (c) перевіряє, чи с є символом рядковою літерою
isspace (c) перевіряє, чи с є символом пустим символом (пробіл, табуляція чи новий рядок)
issuper (c) перевіряє, чи с є символом прописною літерою
isascii (c) перевіряє, чи с є символом кодом A S C I I
iscntrl (c) перевіряє, чи с є символом управляючим символом
ispunct (c) перевіряє, чи с є символом знаком пунктуації
isalnum (c) перевіряє, чи с є символом літерою чи цифрою

 

Приклад:

isalpha (‘s’)! = 0

isalpha (‘#’) = = 0

Функція isalpha(c) повертає ненульове значення (істина), якщо с є символом літери, та нуль (не істина) - у противному випадку. Перетворення символьних рядків:

atoi(), atof()

Функція atoi() перетворює рядок в ціле.

Функція atof() перетворює рядок в число із плаваючою точкою.

Система може мати зворотні функції: itoa() перетворює ціле в символьний рядок, а функція ftoa() число із плаваючою точкою в символьний рядок.

Приклад:

/*включення atoi()*/

#include <stdio.h>

main()

{

static char number [10];

int value;

puts(“Введіть ціле число”);

gеts(number);

value = atoi (number);

printf(“Число було%d\n”,value);

}

Функція atoi(), ігноруючи початкові і кінцеві пропуски, обробляє цифри та алгебраїчний знак, якщо він є. Обробка ведеться до тих пір, поки обробляємий символ є цифрою чи знаком.

Функція atof() виконує ті ж самі дії для чисел із плаваючою точкою. Вона повертає тип double, саме тому повинна бути описана як double у використовуючий її програмі.

Кожному символу ставиться у відповідність ASCII-код. Таблиця ASCII-кодів наведена у додатку Д.




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 421; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.