Функции преобразования данных
Прототипы функций преобразования данных находятся в файле <stdlib.h>.
Преобразование строки символов в целое число:
int atoi(const char *s);
long atol(const char *s);
Возвращает преобразованное значение входной строки. Если строка не может быть преобразована возвращает ноль.
Преобразование строки символов в вещественное число:
double atof(const char *s);
Возвращает преобразованное значение входной строки. Если строка не может быть преобразована возвращает ноль.
Преобразование строки символов в длинное целое число с указанием системы счисления:
long strtol(const char *s, char **endptr, int radix);
unsigned long strtoul(const char *s, char **endptr,
int radix);
Возвращает преобразованное значение входной строки. Если строка не может быть преобразована возвращает ноль. Указатель *endptr устанавливается на первый символ строки не отвечающий синтаксису целого числа языка СИ.
Преобразование строки символов в вещественное число:
double strtod(const char *s, char **endptr);
Возвращает преобразованное значение входной строки. Если строка не может быть преобразована возвращает ноль. Указатель *endptr устанавливается на первый символ строки не отвечающий синтаксису вещественного числа языка СИ.
Преобразование целого числа в строку символов с указанием системы счисления:
char *ltoa(long value, char *string, int radix);
char *itoa(int value, char *string, int radix);
char *ultoa(unsigned long value, char *string,
int radix);
Возвращает указатель на выходную строку.
Преобразование вещественного числа в строку символов:
char *ectv(double value, int ndig, int *dec, int *sign);
char *fctv(double value, int ndig, int *dec, int *sign);
Функции возвращают указатель на статический буфер памяти с выходной строкой, содержащей только цифры числа. Буфер обновляется при каждом вызове функции. Для функции ectv() ndig является числом цифр в выходной строке, для fctv() - числом цифр в выходной строке после десятичной точки. Параметр dec показывает положение десятичной точки в выходной строке, которая явно не присутствует. Параметр sign принимает отличное от нуля значение для отрицательных чисел.
Преобразование вещественного числа в строку:
char *gctv(double value, int ndec, char *buf);
Функции возвращают указатель на буфер buf памяти с выходной строкой, содержащей готовое к печати символьное представление числа из ndec цифр в формате F Фортрана, если возможно. В противном случае число будет представлено в формате e функции printf().
Структуры языка C.
Под структурой понимают совокупность данных разного типа, лежащих в непрерывной области памяти и объединенных общим именем.
Отличие от массивов - элементы структуры разного типа.
Необходимость: часто реальный объект характеризуется величинами разного типа.
Пример: товар на складе
название char name[21];
цена float price;
количество int number;
Все три переменных неразрывно связаны с каким-то товаром.
Описание структуры
Способ
struct { char name[21];
float price;
int number;} goods;
Выделяется 27 байт для переменной goods;
Способ
struct _GOODS { char name[21];
float price;
int number;};
Оператор не выделяет память, а устанавливает тип структуры. Для выделения памяти надо выдать оператор:
struct _GOODS goods1, goods2;
Выделяет память для goods1 и goods2, каждой по 27 байт.
Можно смепшать два способа:
struct _GOODS { char name[21];
float price;
int number;} goods;
Устанавливает тип структуры и выделяет память для goods.
3 способ. Используется оператор описания типа typedef:
typedef double real;
обычное описание
Если при описании имени стоит слово typedef, то описание не выделяет память, а создает новый тип данных - real, который можно применять также как и любое другое описание типа:
real a, b;
Еще пример:
typedef char string[40];
новый тип string
string a, b, c; - описание трех переменных, каждая из
которых является массивом из 40 символов.
В случае структуры имеем:
typedef struct { char name[21];
float price;
int number;} GOODS;
Описание типа
GOODS goods1, goods2; - выделение памяти для переменных
goods1 и goods2.
Дата добавления: 2016-03-10; просмотров: 884;