4. Символьные строки директива #define, функции printf( ) и scanf( )
4. Символьные строки директива #define, функции printf( ) и scanf( )
В этой главе мы продолжим нашу "игру" с данными покопаемся в вопросах, выходящих за пределы тех, которые были связаны с типами данных, и рассмотрим символьную строку Сначала опи шем важное средство языка - препроцессор Си - и узнаем, как задавать и использовать символические константы. Затем вновь об судим способы ввода и вывода данных, при этом более полно ис следуем возможности функций printf( ) и scanf( ). Ну, а теперь вы вероятно, ожидаете примера программы, который должен быть помещен в начале главы; мы не будем вас разочаровывать и приведем его:
/* непринужденный разговор */
# define DENSITY 62 4 /* плотность тела человека в фунтах на кубический фут */
main( ) /* любопытствующая программа*/
{
float weight, volume;
int size, letters;
char name [40]; /* или попробуйте "static char name [40], */
printf(" Привет! Как вас зовут? " );
scanf(" %s" , name);
printf("%s, Каков ваш вес в фунтах? ", name);
scani("%f", &weight);
size = sizeof name;
letters = strlen (name);
volume = weight/DENSITY;
printf(" Прекрасно, %s, ваш объем %2 2f кубических фута. ", name, volume);
printf(" Кроме того, ваше имя состоит из %d букв, ", letters);
printf(" и для его размещения в памяти у нас есть %d байт. ", size);
}
Результат работы программы "непринужденный разговор" может, например, выглядеть следующим образом:
Привет ! Как вас зовут?
Анжелика
Анжелика Каков ваш вес в фунтах?
102,5
Прекрасно, AНЖЕЛИКА ваш объем 1,64 кубических фута
Кроме того, ваше имя состоит из 8 букв
и для его размещения в памяти у нас есть 40 байт
Перечислим основные новые черты этой программы:
1. Мы использовали "массив" для хранения "символьной строки" - в данном случае для некоторого имени.
2. При вводе и выводе строки была использована "спецификация преобразования" %s.
3. Для определения символической константы DENSITY был использован препроцессор языка Си.
4. Для нахождения длины строки была использована функция strlen( ).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Символьные функции
Символьные функции Наиболее часто используемые функции, с помощью которых можно производить различные операции над символьными строками, описаны в табл. П2.15.Таблица П2.15. Символьные функции Функция Описание Asc(str) Возвращает ASCII-код первого символа в строке
Правило 2: Предпочитайте const, enum и inline использованию #define
Правило 2: Предпочитайте const, enum и inline использованию #define Это правило лучше было бы назвать «Компилятор предпочтительнее препроцессора», поскольку #define зачастую вообще не относят к языку C++. В этом и заключается проблема. Рассмотрим простой пример; попробуйте написать
3.5. Символьные функции
3.5. Символьные функции Рассмотрим символьные функции, которые вы можете использовать в выражениях.• BIT_LENGTH(<Строка>).Функция BIT_LENGTH() возвращает длину строки в битах. Например, функция BIT_LENGTH(Крылов) возвращает значение 48 при использовании однобайтовой кодировки и
ИЗУЧЕНИЕ И ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ printf( ) И scanf( )
ИЗУЧЕНИЕ И ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ printf( ) И scanf( ) Функции printf( ) и scanf( ) дают нам возможность взаимодействовать с программой. Мы называем их функциями ввода-вывода. Это не единственные функции, которыми мы можем воспользоваться для ввода и вывода данных с помощью
Модификаторы спецификации преобразования, используемые в функции printf( )
Модификаторы спецификации преобразования, используемые в функции printf( ) Мы можем несколько расширить основное определение спецификации преобразования, поместив модификаторы между знаком % и cимвoлoм, определяющим тип преобразования. В приводимой ниже таблице дан
Применение функции scanf( )
Применение функции scanf( ) Поскольку в дальнейшем мы будем пользоваться функция scanf( ) лишь эпизодически, мы рассмотрим здесь только основные особенности ее применения. Так же как для функции printf( ), для функции scanf( ) указываются управляющая строка и следующий за
ДИРЕКТИВЫ ПРЕПРОЦЕССОРА #define, #include, #undef, #if, #ifdef, #ifndef, #else, #endif
ДИРЕКТИВЫ ПРЕПРОЦЕССОРА #define, #include, #undef, #if, #ifdef, #ifndef, #else, #endif Язык Си был разработан в помощь работающим программистам, а им нравится его препроцессор. Этот полезный помощник просматривает программу до компилятора (отсюда и термин "препроцессор") и заменяет
13. Символьные строки и функции над строками
13. Символьные строки и функции над строками СИМВОЛЬНЫЕ CTРOKИИНИЦИАЛИЗАЦИЯ СИМВОЛЬНЫХ СТРОКВВОД-ВЫВОД СТРОКИСПОЛЬЗОВАНИЕ ФУНКЦИЙ, РАБОТАЮЩИХ CO CТРОKAMИАРГУМЕНТЫ КОМАНДНЫХ
Функция scanf( )
Функция scanf( ) Мы уже использовали ранее функцию scanf( ) и формат %s для считывания строки. Основное различие между scanf( ) и gets( ) заключается в том, как они определяют, что достигли конца строки: scanf( ) предназначена скорее для получения слова, а не строки. Функция gets( ), как мы
Символьные строки
Символьные строки Символьная строка состоит из последовательности символов, заключенных в двойные кавычки. Эта последовательность представляется в памяти как массив элементов типа char. Символьная строка представляет в выражении адрес этого массива, т. е. адрес первого
Директива #define
Директива #define Синтаксис:#define <идентификатор> <текст>#define <идентификатор> <список параметров> <текст>Директива #define заменяет все вхождения <идентификатора> в исходном файле на <текст>, следующий в директиве за <идентификатором>. Этот процесс
9.1.5. Директива extern "C" и перегруженные функции A
9.1.5. Директива extern "C" и перегруженные функции A В разделе 7.7 мы видели, что директиву связывания extern "C" можно использовать в программе на C++ для того, чтобы указать, что некоторый объект находится в части, написанной на языке C. Как эта директива влияет на объявления