русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Преобразование символьных строк

Существуют функции преобразования строки в целое число (функция atoi( )), длинное целое (функция atol( )), в число с плавающей точкой двойной точности (функция atof( )) или длинное число с плавающей точкой (функция atold( )). Рассмотрим подробней каждую из функций преобразования.

Функция atoi( )

Функция преобразует символьную строку в целочисленный формат. Прототип функция описан в заголовочном файле stdlib.h и имеет следующую структуру:

int atoi(char *s);

где s – указатель на преобразуемую символьную строку.

Функция atoi( ) преобразует строку, на которую указывает указатель s, в целое число типа int.

Функция распознает символы в строке в следующем порядке:

· необязательная строка символов табуляции и пробелов;

· необязательный знак;

· строка цифр.

Число цифр, составляющих число, не должно превышать пяти, т.к. максимальное значение типа int – 32767.

Функция atoi( ) возвращает преобразованное значение входной строки. Если строка не может быть преобразована в число соответствующего типа (int), то возвращаемое значение равно 0. Например, результат преобразования строки «abcd» – 0.

Фрагмент программы

char *s1 = “1345”,

*s2 = “ -31”,

*s3 = “+97aBc”;

int i1, i2, i3;

i1 = atoi(s1);

i2 = atoi(s2);

i3 = atoi(s3);

printf(“i1 = %d i2 = %d i3 = %d”, i1, i2, i3);

позволит вывести численные значения переменных в следующем виде:

i1 = 1345 i2 = -31 i3 = 97

При обнаружении первого нераспознанного символа функция прекращает преобразование.

Функция atol( )

Функция atol( ) преобразует символьную строку в целое число типа long. Прототип функции описан в заголовочном файле stdlib.h и имеет следующую структуру:

long atol(char *s);

Функция atol( ) преобразует строку, на которую указывает указатель s, в число типа long.

Функция atol( ) полностью аналогична функции atoi( ) за исключением того, что количество цифр в формате строки значительно больше (до 10).

Если строка задает число вне диапазона –2147483648 – 2147483647, то наступает переполнение и результат преобразования непредсказуем.

Например,

long m;

char *pstr = “98765432”;

m = atol(pstr);

printf(“строка = %s; число типа long = %ld\n”, pstr, m);

Результат работы программы:

строка = 98765432; число типа long = 98765432

Отметим некоторые особенности данной программы. Переменная m имеет тип long, потому что принимает возвращаемое функцией atol( ) значение типа long. Функция printf( ) имеет для второго аргумента спецификатор ld, т. к. выводимое значение длинного типа.

Функции atof( ) и atold( )

Функция atof( ) преобразует строку в число типа double.

Прототип функции описан в заголовочном файле stdlib.h и имеет следующую структуру:

double atof (char *s);

Функция преобразует строку, на которую указывает указатель s, в число типа double.

Функция распознает символьное представление числа с плавающей точкой, составленной из следующих компонентов:

· необязательная строка знаков табуляции и пробелов;

· необязательный знак;

· строка цифр и необязательная десятичная точка, расположенная в любом месте этой строки;

· необязательный символ e (Е)юбдлщш98, за которым следует необязательное целое со знаком или без него.

Символьная строка должна иметь следующий общий формат:

[пробелы][знак][dd…d][.][dd…d][e или E][знак][dd…d]

ü Внимание ! Обязательно наличие целой составляющей числа или точки с десятичной частью.

Например,

“28”, “.589”, “12.5”, “ -.06”, “62.E2”, “-0.2e-2”, “.1e+5”.

При обнаружении первого нераспознаваемого символа функция atof( ) прекращает преобразование.

Например, строка “12.5R-02” преобразуется в число 12.5.

Иначе говоря, любой непреобразуемый символ выступает как символ окончания строки ‘\0’.

При переполнении функция atof( ) возвращает отрицательное или положительное значение HUGE_VAL (огромное значение), что позволяет идентифицировать строку переполнения.

Переполнение наступает, когда преобразованное значение по модулю выходит из диапазона 1.7E-308 1.7E308.

Функция atold( ) аналогична функции atof( ) за исключением того, что она возвращает значение типа long double, для хранения которого отводится 10 байт, а диапазон возможного представления по модулю 3.4E-4932 1.1E4932.

Например,

double x;

float y;

char *pstr1= “123.45”;

char *pstr2= “1.7E20”;

x=atof(pstr1);

y=atof(pstr2;

printf(“Строка1 = %s число = %f. \n Строка2 = %s число = %lf. \n”, x, y);

Методика ввода числовых данных с использованием функции gets( )

Функции преобразования символьной строки в числовой формат позволяют отказаться от использования в программе функции scanf( ).

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

Например, фрагмент программы

char buf[20];

int d;

float r;

printf(“Введите значение переменной d:”)

gets( buf );

d = atoi( buf );

printf(“Введите значение переменной r:”)

gets( buf );

r = atof( buf );

позволяет последовательно ввести значения целой переменной d и вещественной переменной r, посредством символьной строки buf, необходимой для ввода и промежуточного хранения вводимых значений в формате символьной строки.

Просмотров: 1185


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.