Лабораторная работа: Вказівки, масиви і символьні рядки в мові C

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

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

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

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

int islower(int с) — символ с є малою літерою;

int isupper(int c) — символ с є великою літерою;

int isalnum(int c) — символ с є буквою або цифрою;

int isalpha(int c) — символ с є буквою;

int tolower(int c) — перетворення літери у нижній регістр;

int strtol(int c) — перетворення стрингу у довге ціле число;

Приклад

Обчислити вираз з дужками, десятковими цифрами та знаками +, -, *, /.

#include <ctype.h>

#include <math.h>

isdig(char c) {return ((isdigit(c)) || 'с'=='.');}

double val(char **);

double getdig(char ** s)

{

double res;

if(**s=='(') res=val(++*s);

else {res=atof(*s); while(isdig(*++*s));};

return res;

}

double multi(char** s)

{

double res=getdig(s);

while((**s=='*') || (**s=='/'))

if(**s=='*') res*=getdig(++*s);

else res/=getdig(++*s);

}

К-во Просмотров: 210
Бесплатно скачать Лабораторная работа: Вказівки, масиви і символьні рядки в мові C