Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Строки полностью.doc
Скачиваний:
10
Добавлен:
18.07.2019
Размер:
131.58 Кб
Скачать

Функции стандартной библиотеки для преобразования строк в числа (заголовочный файл stdlib.H).

Преобразование строки в вещественное число

double atof(const char *str);

Преобразует строку, содержащую символьное представление целого или вещественного числа, в соответствующее вещественное число с двойной точностью (типа double). Если преобразование не удалось, возвращает 0.0.

Преобразование строки в целое число

int atoi(const char *str);

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

Преобразование строки в длинное целое число

long atol(const char *str);

Преобразует строку, содержащую символьное представление целого числа, в соответствующее длинное целое число (тип long int). Если преобразование не удалось, возвращает 0L.

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

Если число выходит за пределы диапазона данного типа, переменной errno присваивается значение ERANGE и возвращается допустимое число.

errno (заголовочный файл errno.h) - глобальная целочисленная переменная, используется для обработки ошибок, возникающих при использовании математических функций (может содержать номер ошибки, который дает дополнительную информацию о последней из обнаруженных ошибок).

Макрос ERANGE (заголовочный файл errno.h) задает отличную от нуля целочисленную константу, используемую для фиксации ошибки диапазона.

Пример: заполнение массива типа double из строки:

#include <stdio.h>

#include <string.h>

#inc1ude <stdlib.h>

int main( ){

char s[ ] = “2, 38.5, 70, 0, 0, 1”, *p=s;

double m[10];

int i = 0;

do{

m[i++] = atof(p);

if (i>9) break;

}while (p = strchr(p, ‘,’), p++);

for (int k = 0; k<1; k++) printf (“%5.2f”, m[k]);

return 0;

}

Функции стандартной библиотеки для работы с символами (заголовочный файл ctype.H).

Проверяет, является ли символ буквой или цифрой:

int isalnum(int ch);

Проверяет, является ли символ буквой

int isalpha(int ch);

Проверяет, является ли символ управляющим (символ del, табуляции и т.п.)

int iscntrl(int ch);

Проверяет, является ли символ цифрой

int isdigit (int ch);

Проверяет, является ли символ видимым (не является символом пробела, табуляции и т. д.)

int isgraph(int ch);

Проверяет, является ли символ буквой нижнего регистра

int islower (int ch);

Проверяет, является ли символ печатаемым (видимый или пробел)

int isprint(int ch);

Проверяет, является ли символ символом пунктуации (печатаемым, но не буквой, цифрой, пробелом):

int ispunct(int ch);

Проверяет, является ли символ разграничительным (пробел, табуляция, символ новой строки, символ новой страницы):

int isspace(int ch);

Проверяет, является ли символ буквой верхнего регистра:

int isupper (int ch);

Данные функции выделяют младший байт параметра ch (двоичный код символа) и возвращают значение true, если условие выполняется, или false в противном случае. Рекомендуется пользоваться стандартными функциями, а не писать собственные циклы проверки, так как это снижает количество ошибок в программе.

Проверяет, является ли символ шестнадцатеричной цифрой (цифры, а также буквы от А до F в нижнем или верхнем регистрах):

int isxdigit(int ch);

Перевод символа в нижний регистр:

int tolower (int ch);

Перевод символа в верхний регистр:

int toupper (int ch);

Данные функции также используют только младший байт параметра ch.

Все перечисленные функции получают в качестве параметра код символа, который имеет тип int. Поэтому они предназначены только для работы с однобайтовыми символами (кодировки ASCII).

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

Для работы с многобайтными символами предназначены функции iswalnum, iswalpha, iswcntrl, iswdigit, iswgraph, iswlower, iswprint, iswpunct, iswspace, iswupper, iswxdigit, towlower, towupper.

Данные функции аналогичны функциям для работы с однобайтовыми символами, но принимают параметр типа wint_t. Например, функция iswalnum имеет формат, аналогичный формату функции isalnum, и отличается только типом аргумента:

int iswalnum (wint_t ch);

Также имеется функция, проверки многобайтового символа:

int iswctype(wint_t с, wctype_t desc);

Возвращает ненулевое значение, если символ с обладает свойством desc, или нулевое в противном случае.

Данная функция не имеет аналога для однобайтовых символов.

Тип wctype_t – структурный тип для преобразования символов расширенного набора.

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

struct wctype_t{

long tmin; // Минимальный код символа

long tmax; // Максимальный код символа

unsigned char *index; // Индекс классификации

unsigned int *type; // Тип

long cmin; // Минимальный код для преобразований

long cmax; // Максимальный код для преобразования

long *code; // Код преобразования