Функции для работы со строками




Это стандартные функции, которые находятся в библиотеке языка С. Для их подключения необходимо в начале программы записать директиву препроцессора:

#include <string.h>

Рассмотрим основные, наиболее часто используемые строковые функции:

1. strlen(имя_строки) – определяет длину строки без учета символа ‘\0’.

char st[21]=”Program interruption\0”;

int l;

l=strlen(st); à l = =20

2. strcpy(str1,str2) – копирует строку str2 в строку str1, т. е. str2 àstr1.

Длина строки 1 должны быть не меньше длины строки 2.

char a[15], b[12]=”profiles”;

strcpy(a,b); à a==b

3. strcat(str1,str2); - дополняет строку str1 строкой str2, т. е. str1= str1+ str2

char c[25]=”abcdef”, d[10]=”ghijklmn”

strcat(c,d); à c==”abcdefghijklmn”

4. strcmp(str1,str2) – сравнение строк. Эта функция выполняет посимвольное вычитание str1-str2 и возвращает разность кодов ASCII первых двух несовпадающих символов:

strcmp(“AA”,”AA”) = = 0

strcmp(“AB”,”AA”) = = 1

strcmp(“AA”,”AB”) = = -1

Эта функция часто используется для сортировки строк по алфавиту.

 

Структуры и объединения в языке С

Описание структур

Структура – это средство для объединения нескольких разнотипных величин в одно целое. Например, данные о сотруднике фирмы:

- фамилия – char[];

- имя – char[];

- отдел – int;

- должность – char[]

- зарплата – float

Способы описания структур:

1-й способ. Использование шаблона структуры:

/* Описание шаблона структуры */

struct <имя_шаблона>

{

тип1 имя_поля1;

...

типN имя_поляN;

};

/* Объявление переменных, массивов через шаблон структуры */

struct <имя_шаблона> перем1,..., перемN, массив[K];

где <имя_шаблона> - идентификатор для обозначения шаблона

типI имя_поляI – описание поля, входящего в структуру

Пример. Описать в виде структуры информацию о товарах, хранящихся на складе:

struct Рrod

{

char name[30];

int code;

float price;

int num;

};

struct Рrod pr1, pr2, mpr[20];

 

2-й способ. Создание нового типа данных в виде структуры.

/* Создание нового типа */

typedef stuct

{

тип1 имя_поля1;

. . .

типN имя_поляN;

} имя_типа;

/* Объявление переменных, массивов с новым типом в виде структуры */

имя_типа перем1,..., перемN, массив[k];

где typedef – это ключевое слово языка С, которое используется для создания новых (нестандартных) типов данных в программе

имя_типа – это обозначение нового типа данных в программе, имеющего вид структуры. Рекомендуется задавать имя типа с буквы Т... (от английского слова Type – тип).

Пример:

typedef struct

{

char name[30];

int code;

float price;

int num;

} TProd;

...

TProd pr1, pr2, mpr[20];

 

3-й способ. Одновременное описание структуры и объявление переменных, массивов

struct

{

тип1 имя_поля1;

. . .

типN имя_поляN;

} перем1,...,перемN,массив[k];

Пример:

struct

{

char name[30];

int code;

float price;

int num;

} pr1, pr2, mpr[20];

Области применения способов 1-3.

1 и 2 способы используются, когда:

а) структура является аргументом функции:

void fst(TProd a,...);

б) в разных функциях программы эта структура используется для описания переменных:

void f1(...)

{

TProd f;

...

}

void f2(...)

{

TProd g;

...

}

3-й способ применяется, когда структура используется только внутри одной функции main() или другой функции.

 

Инициализация структур

Одновременно с описанием переменных в виде структур, можно задавать полям (элементам) структур начальные значения:

TProd zp={“Компьютер P-IV 3000 MHz”, 2117, 3150.0, 5};

TProd mzp[5]={ {“Холодильник Nord 2910”,1521, 2130.0, 12},

{"Телевизор LG 21FX4RG”, 3462, 1175.0, 10},

.......

};

Работа с элементами структур

Для выделения из структуры отдельного элемента используется форма записи:

перем .имя_поля

где перем – это имя переменной, имеющей вид структуры (способы 1-3)

.- операция выделения из структуры (символ ‘точка’)

имя_поля – это элемент структуры

pr1.code

pr2.price

mpr[6].num

С элементами структур можно выполнять различные операции (ввод, вывод, присваивание, сравнение):

pr1.price=850.0;

scanf(“%d”, &pr1.num);

if(pr1.code = = pr2.code) ...;

puts(pr2.name);

Структуры и указатели

Для структур, описанных 1 или 2 способом можно создавать указатели на структуры:

TProd b,*ptr_b;

ptr_b=&b; /* присвоим указателю адрес структуры */

Для выделения элементов структуры через указатель используется форма записи

указатель->имя_поля (‘->’ записывается как ‘минус’‘больше’)

ptr_b->name

ptr_b->price

Можно использовать точку (‘.’):

(*ptr_b).price

Скобки нужны, так как операция . старше операции *.

void fs(TProd *ptx,...)

{

ptx->code=1311;

...

}

Вызов функции:

fs(&b,...);

Указатели на структуры часто используются как аргументы функции, для передачи в функцию только адреса структуры, а не всей структуры.

 





©2015-2017 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.

Обратная связь

ТОП 5 активных страниц!