Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Длина строки






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

size_t strlen(const char *string);

Функция возвращает длину строки, не включая нуль-символ. Как всегда, следите за тем, чтобы в выделенной под string памяти все же нашелся такой символ. В противном случае функция выйдет за пределы выделенной памяти и все будет плохо. Напомню, что для определения длины строки функции придется последовательно обратиться ко всем ее символам до нуль-символа, а значит, потенциально эта операция довольно дорогая. Поэтому, не следует использовать эту функцию в циклах, то есть вместо

for (i=0; i< strlen(str); i++) { // работа со строкой, не изменяющая ее длину}

больше подойдет примерно такой код:

char len; len=strlen(str); for (i=0; i< len; i++) { // работа со строкой, не изменяющая ее длину}

 

В заголовочных файлах < stdlib.h> и < cstdlib> содержатся полезные функции преобразования строк в числа:

Доступно целое семейство функций atof, atoi, atol и itoa, ltoa. Все они очень похоже между собой. Функции из первой группы преобразуют строку в число (float, int или long) в зависимости от окончания. Функции из второй группы выполняют обратное преобразование. Функции из второй группы не входят в стандарт С, однако они весьма удобны и доступны на некоторых платформах.

Прототипы функций из первой группы:

double atof(const char* string); int atoi(const char* string); long atol(const char* string);

 

Признаком конца числа служит первый символ, который не может быть интерпретирован как принадлежащий числу. если преобразование не удалось возвращается 0.

 

char a[]=”10) Рост – 162, вес – 63.5кг”;

int num = atoi(a);

long height = atol(& a[11]);

double weigth = atof(& a[25]);

Пробелы и табуляции в начале строки пропускаются. Преобразование прекращается при встрече недопустимого символа или конца строки. Если строку нельзя преобразовать в число, возвращается 0.

Вторая группа:

char* itoa(int value, char* string, int radix); char* ltoa(long value, char* string, int radix);

Функции из второй группы могут создавать строковое представление чисел в любой системе (по любому основанию) от 2 до 36. Основание передается в третьем параметре. Чтобы получить строковое представление числа в десятичной системе, передайте 10. Функции возвращают указатель на строку.

ПРИМЕЧАНИЕ При использовании этих функций не забывайте выделять память, достаточную для предоставления строкового предоставления числа. Например, максимальная длина десятичного строкового представления четырехбайтного беззнакового целого числа - 11 байт, включая нуль-символ (" 4294967295").

Пример:

char str1[5]; char str2[5]; char str3[5]; itoa(12, str1, 10); //str1=”12” itoa(12, str1, 16); //str1=”C” itoa(12, str1, 2); //str1=”1100”

 

Для хранения отдельных символов используются переменные типа char. Их ввод вывод может выполнятся функциями

getchar() и putchar()

char c;

c=getchar(); putchar(c);

Для работы с символами в стандартной библиотеке (заголовочные файлы < ctype.h> и < cctype>) есть следующие функции:

Таблица 4.1.
Имя Проверка на принадлежность символа множеству
isalnum букв и цифр (A-Z, a-z, 0-9)
isalfa букв (A-Z, a-z)
iscntrl управляющих символов (с кодами 0..31 и 127)
isdigit цифр (0-9)
isgraph Печатаемых символов, кроме пробела (isalfa | isdigit | ispunct)
islower букв нижнего регистра (a-z)
isprint Печатаемых символов
ispunct знаков пунктуации
isspace символов-разделитетей
isupper букв верхнего регистра (A-Z)
isxdigit шестнадцатеричных цифр (A-F, a-f, 0-9)

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.