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




В Си имеется обширная библиотека функций для работы со строками, которая вызывается директивой препроцессора:

#include <string.h>

Рассмотрим функции, входящие в эту библиотеку.

1. Определение текущей длины строки: int strlen(строка) – возвращает целое число без знака:

char *str;

str = ”jasyk C”;

unsigned int k;

k = strlen(str);

Переменная k примет значение 7.

2. Первое вхождение одного из символов строки – второго аргумента
в строку – первый аргумент char *strpbrk(строка_1, строка_2) возвращает указатель на строку:

char str_1[10]=”jasyk C”;

char str_2[10]=”ky”;

char *str;

str = strpbrk(str_1, str_2); // str – обязательноуказатель!

printf(“\n%s”, str);

На экране появится сообщение:

Yk C

3. Первое вхождение символа – второго аргумента в строку – первый аргумент char *strchr(строка, символ) возвращает указатель на строку:

char str_1[50]="programmisty-molodcy";

char c =’m’;

char *str;

str = strchr(str_1, c);

printf(“\n%s”, str);

На экране появится сообщение:

Mmisty-molodcy

Если символ не найден, то функция возвращает значение NULL.

4. Последнее вхождение символа – второго аргумента в строку – первый аргумент char *strrchr(строка, символ) возвращает указатель на строку:

char str_1[50]="programmisty-molodcy, ljubjat nas krasavicy";

char c ='s';

char *str;

str = strrchr(str_1, c);

printf(“\n%s”, str);

На экране появится сообщение:

Savicy

Если символ не найден, то функция возвращает значение NULL.

5. Первое вхождение заданной последовательности символов строки – второго аргумента в строку – первый аргумент:
char *strstr(строка_1, строка_2) возвращает указатель на строку:

char str_1[50]="programmisty-molodcy, ljubjat nas krasavicy";

char str_2[10]=”ljub”;

char *str;

str = strstr(str_1, str_2);

printf(“\n%s”, str);

 

На экране появится сообщение:

Ljubjat nas krasavicy

Если последовательность не найдена, то функция возвращает значение NULL.

6. Соединение строки – первого аргумента и строки – второго аргумента char *strcat(строка_1, строка_2) возвращает указатель на строку:

char str_1[50]="programmisty-molodcy,";

char str_2[50]=” ljubjat nas krasavicy";

char *str;

str = strcat(str_1, str_2);

printf(“\n%s”, str);

На экране появится сообщение:

Programmisty-molodcy, ljubjat nas krasavicy

7. Сравнение двух строк: строки – первого аргумента и строки – второго аргумента
int strcmp(строка_1, строка_2) – возвращает

-1, если строка_1 < строка_2,

0, если строка_1 = строка_2,

1, если строка_1 > строка_2

Сравнение производится посимвольно слева направо до первых несовпадающих символов строк.

char str_1[20]=”programmist”;

char str_2[20]=”programmirovanie”;

int k;

k = strcmp(str_1, str_2);

Переменная k примет значение 1, так как первая строка больше (не длиннее!) второй.

8. Переворот строки:
char *strrev(строка) – возвращает указатель на строку:

char str_1[10]=”programma”;

char *str;

str = strrev(str_1);

printf(“\n%s”, str);

На экране появится сообщение:

Ammargorp

9. Копирование одной строки в другую:
char *strncpy(строка_1, строка_2, k) – заменяет k первых символов строки_1 на k первых символов строки_2 и возвращает указатель на строку:

char str_1[50]="pervokursnik";

char str_2[50]="vtoroj kurs";

char *str;

int k=5;

str = strncpy(str_1, str_2, k);

printf(“\n%s”, str);

На экране появится сообщение:

Vtorokursnik

Эта функция не требует операции присваивания слева от себя. При этом выходным параметром является первый аргумент функции:

char str_1[50]="pervokursnik";

char str_2[50]="vtoroj kurs";

int k=5;

strncpy(str_1, str_2, k);

printf(“\n%s”, str_1);

На экране появится сообщение:

Vtorokursnik

10. Преобразование строки в вещественное число (float или double):
float atof(строка) – возвращает вещественное число:

float x;

str="3.1416";

x=atof(str);

printf("\n str = %s", str);

printf("\n x = %6.4f", x);

На экране появится сообщение:

str = 3.1416

x = 3.1416

Если в преобразуемой строке встречается некорректный символ, то преобразование идет до него, и сообщение об ошибке не выдается:

float x;

str="3.14a6";

x=atof(str);

printf("\n str = %s", str);

printf("\n x = %6.4f", x);

На экране появится сообщение:

str = 3.14a6

x = 3.1400

11. Преобразование строки в целое число:
int atoi(строка) – возвращает целое число:

int i;

str="12345";

i=atoi(str);

printf("\n str = %s", str);

printf("\n i = %d", i);

На экране появится сообщение:

str = 12345

i = 12345

Если в преобразуемой строке встречается некорректный символ, то преобразование идет до него, и сообщение об ошибке не выдается:

int i;

str="12a45";

i=atoi(str);

printf("\n str = %s", str);

printf("\n i = %d", i);

На экране появится сообщение:

str = 12a45

i = 12

12. Преобразование строки в длинное целое число:
int atol(строка) – возвращает длинное целое число:

long k;

str="1234567890";

k=atol(str);

printf("\n str = %s", str);

printf("\n k = %d", k);

На экране появится сообщение:

str = 1234567890

k = 1234567890

Если в преобразуемой строке встречается некорректный символ, то преобразование идет до него, и сообщение об ошибке не выдается:

long k;

str="12a4567890";

k=atol(str);

printf("\n str = %s", str);

printf("\n k = %d", k);

На экране появится сообщение:

str = 12a4567890

k = 12

13. Преобразование целого числа в строку. При преобразовании задается основание системы счисления от 2 до 32:
char itoa(число, строка, основание) – возвращает указатель на строку:

int i=12345;

char *str;

itoa(i, str, 10); // оператор присваивания не нужен!

printf("\n i = %d", i);

printf("\n str = %s", str);

На экране появится сообщение:

i = 12345

str = 12345

Преобразуем число в шестнадцатеричную систему счисления:

int i=23456;

char *str;

itoa(i, str, 16);

printf("\n i = %x", i);

printf("\n str = %s", str);

На экране появится сообщение:

i = 5BA0

str = 5BA0

14. Преобразование длинного целого числа в строку. При преобразовании задается основание системы счисления от 2 до 32:
char ltoa(число, строка, основание) – возвращает указатель на строку:

long i=1234567890;

char *str;

ltoa(i, str, 10);

printf("\n i = %d", i);

printf("\n str = %s", str);

На экране появится сообщение:

i = 1234567890

str = 1234567890

Преобразуем это же число в шестнадцатеричную систему счисления:

long i=1234567890;

char *str;

ltoa(i, str, 16);

printf("\n i = %x", i);

printf("\n str = %s", str);

На экране появится сообщение:

i = DFB38D2

str = DFB38D2

 

Учебное издание

 



Поделиться:




Поиск по сайту

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


Поиск по сайту: