- •1. Основные отличия стандартной библиотеки Си от других
- •2. Определение класса символов и преобразование символов
- •3. Работа с областями памяти и строками
- •4. Функции преобразования типов
- •5. Математические функции
- •6. Динамическое распределение памяти
- •7. Функции стандартного ввода и вывода
- •8 . Функции ввода/вывода высокого уровня
- •9. Функции ввода/вывода нижнего уровня
- •10. Функции ввода/вывода с консольного терминала
- •11. Работа с каталогами файловой системы
- •12. Операции над файлами
- •13. Использование вызовов операционной системы
- •14. Управление процессами
- •15. Поиск и сортировка
- •16. Функции для работы с датой и временем
4. Функции преобразования типов
Описанные в табл. 4 функции объявлены в стандартной библиотеке stdlib.h. Прототип функции atof содержится, кроме того, в файле math.h.
<stdlib.h>
Таблица 8.4. Функции преобразования типов
___________________________________________________________________________
Функция Краткое описание
___________________________________________________________________________
atof double atof(const char *s); преобразование строки, в представляемое ей
число типа double. На переполнение возвращает плюс или минус
HUGE_VAL (константа из библиотеки)
atoi int atoi(const char *s); преобразование строки в число типа int (целое). При
неудачном преобразовании вернет 0
atol long atol(const char *s); преобразование строки в число типа long (длинное
целое)
ecvt char *ecvt(double value, int ndig, int *dec, int *sign); преобразование числа
типа double в строку. ndig - требуемая длина строки, dec возвращает
положение десятичной точки от 1-й цифры числа, sign возвращает знак
fcvt char *fcvt(double value, int ndig, int *dec, int *sign); преобразование числа
типа double в строку. В отличие от ecvt, dec возвращает количество цифр
после десятичной точки. Если это количество превышает ndig,
происходит округление до ndig знаков.
gcvt char *gcvt(double value, int ndig, char *buf); преобразование числа типа
double в строку buf. Параметр ndig определяет требуемое число цифр в
записи числа.
itoa char *itoa (int value, char *string, int radix); преобразование числа типа int в
строку, записанную в системе счисления с основанием radix (от 2 до 36
включительно)
ltoa char *ltoa (long value, char *string, int radix); преобразование числа типа
long в строку
ultoa char *ultoa (unsigned long value, char *string, int radix); преобразование
числа типа unsigned long в строку
________________________________________________________________________________
Некоторые системы программирования предоставляет также функции,перечисленные в таб.5.
Таблица 5. Дополнительные функции преобразования типов
________________________________________________________________________________
Функция Краткое описание
________________________________________________________________________________
strtod преобразование строки в число типа double (покрывает возможности
atof)
strtol преобразование строки в число типа long (покрывает возможности atol)
strtoul преобразование строки в число типа unsigned long
________________________________________________________________________________
В приведенном ниже коде число n преобразуется в строку s, представляющую собой запись числа в системе счисления с основанием r.
int n;
printf ("\nN="); scanf ("%d", &n);
char s[25];
int r=10;
do {
printf ("\nRadix[2-36]: ");
fflush (stdin); scanf ("%d",&r);
} while (r<2 || r>36);
s=itoa (n,s,r);
printf ("\n%d in %d notation is %s",n,r,s);