
- •Федеральное агентство по образованию
- •Краткая история языка с
- •Особенности и основные понятия языка Си
- •Структура программы
- •Типы данных
- •Классификация типов данных
- •Вещественные
- •Логический
- •Диапазоны представления данных
- •Объявление переменных
- •Константы в языке Си
- •Операции языка Си. Приоритет операций
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные операции
- •Операцияsizeof
- •Операция выбора по условию
- •Операция запятая
- •Приведение типов Неявное преобразование типов
- •Явное преобразование типов
- •Основные средства ввода-вывода на Си Понятие потока
- •Стандартные потоки
- •Функции потокового ввода-вывода
- •Функции ввода
- •Ввод символов
- •Ввод строк
- •Форматированный ввод
- •Операторы языка Си
- •Оператор if
- •Оператор switch
- •Оператор while
- •Оператор do while
- •Оператор for
- •Оператор break
- •Оператор continue
- •Функции вывода на экран
- •Вывод символов
- •Функция вывода строк puts()
- •Форматированный вывод
- •Указатели в языке Си
- •Адресная арифметика
- •Массивы
- •Функции в языке с
- •Прототипы функций
- •Указатели типа void
- •Функции, возвращающие указатели
- •Встраиваемые функции
- •Рекурсивные функции
- •Функции с переменным числом аргументов
- •Аргументы функции main()
- •Область действия и область видимости
- •Локальные переменные
- •Локальные переменные в функции Main()
- •Глобальные переменные
- •Классы памяти
- •Указатели на указатели
- •Указатели и многомерные массивы
- •Массивы указателей
- •Указатели на функции
- •Операции над строками символов Определение длины строки
- •Копирование строк
- •Поиск в строках
- •Преобразования символов в строках
- •Другие функции для работы со строками
- •Преобразования строк в числа
- •Преобразования чисел в строки
- •Функции анализа символов
- •Распределение памяти
- •Манипулирование блоками памяти
- •Типы, определяемые пользователем
- •Перечислимый тип
- •Структуры
- •Сложные структуры
- •Битовые поля в структурах
- •Объединения
- •Работа с файлами Связь между потоками и файлами
- •Типы дисковых файлов
- •Открытие файла
- •Запись и чтение данных
- •Форматированный ввод-вывод Форматированный вывод
- •Int fprintf (file *fp, char *fmt, ...);
- •Форматированный ввод
- •Символьный ввод
- •Символьный вывод
- •Блочный ввод-вывод
- •Закрытие файла
- •Директивы препроцессора
- •Директива #include
- •Директива #define
- •Директивы условной компиляции
- •Директива #undef
- •Предопределенные макросы
- •69 Лекции по курсу «Языки программирования» Часть III
Преобразования строк в числа
Для преобразования строк в числа используются четыре функции. Их прототипы объявлены в заголовочном файле stdlib.h.
Преобразование строк в целые числа
Для преобразования строки в целочисленное значение используется библиотечная функция atoi(). Ее прототип имеет вид:
int atoi(const char *ptr);
Функция atoi() преобразует строку ptr в целое число, соответствующее представлению. Кроме цифр, строка может содержать пробелы в начале, а также знак + или –. Преобразование начинается с первого символа строки и продолжается до тех пор, пока встретится недопустимый в числе символ (например, буква или знак препинания). Полученное целое число возвращается в вызывающую программу. Если функция atoi() не находит в строке символов, пригодных для преобразования в число, то возвращает 0.
Примеры.
Строка |
Значение, возвращаемое функцией atoi() |
"157" |
157 |
"-1.6" |
-1 |
"+50х" |
50 |
"twelve" |
0 |
"х506" |
0 |
Преобразование строк в длинные целые числа
Библиотечная функция atol() полностью аналогична atoi(), но возвращает значение типа long. Прототип функции имеет следующий вид:
long atol(const char *ptr);
Преобразование строк в числа типа long long
Функция atoll() аналогична по своему назначению функциям atoi() и atol(), но преобразует строки в значения типа long long. Она имеет следующий прототип:
long long atoll(const char *ptr);
Преобразование строк в числа с плавающей точкой
Для преобразования строк в вещественные числа с плавающей точкой (double) используется функция atof(). Она имеет следующий прототип:
double atof (const char *str);
Аргумент str указывает на преобразуемую строку. Она может содержать пробелы перед началом числа, а также знак + или -. Число может состоять из цифр от 0 до 9, десятичной точки, а также знака показателя степени е или Е.
Если в строке не найдены символы, пригодные для преобразования в число, atof() возвращает 0.
Примеры
Строка |
Значение, возвращаемое функцией atof() |
"12" |
12.000000 |
"-0.123" |
-0.123000 |
"12E+3" |
123000.000000 |
"123.1e-5" |
0.001231 |
Преобразования чисел в строки
Прототипы функций объявлены в заголовочном файле stdlib.h.
Преобразование целого числа в строку itoa()
char *itoa (int Значение, char *Строка, int Основание);
Число изображается в указанной при вызове функции системе счисления.
Строка — указатель на строку, куда будет помещено изображение числа.
Основание — задает основание системы счисления (от 2 до 36).
Максимальная длина строки, формируемой функцией itoa -17 байт.
Преобразование длинного целого числа в строку ltoa()
char *ltoa (long Значение, char *Строка, int Основание);
Максимальная длина строки, формируемой функцией ltoa -33 байт.
Преобразование длинного беззнакового целого числа в строку ultoa()
char *ultoa (unsigned long Значение, char *Строка, int Основание);
Максимальная длина строки, формируемой функцией ultoa -33 байт.
Преобразование чисел с плавающей точкой в строку
Для преобразования вещественных чисел с плавающей точкой (double) в строку используется функция gcvt(). Она имеет следующий вид:
char *gcvt(double Значение, int Цифр, char *Строка);
При преобразовании делается попытка получить указанное количество значащих цифр, а если это сделать невозможно, то число изображается в форме с плавающей точкой.