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( ).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Правило 2: Предпочитайте const, enum и inline использованию #define

Из книги Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ автора Мейерс Скотт

Правило 2: Предпочитайте const, enum и inline использованию #define Это правило лучше было бы назвать «Компилятор предпочтительнее препроцессора», поскольку #define зачастую вообще не относят к языку C++. В этом и заключается проблема. Рассмотрим простой пример; попробуйте написать


Символьные функции

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Символьные функции Наиболее часто используемые функции, с помощью которых можно производить различные операции над символьными строками, описаны в табл. П2.15.Таблица П2.15. Символьные функции Функция Описание  Asc(str)  Возвращает ASCII-код первого символа в строке


Символьные строки

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.


Символьные строки

Из книги MySQL 5.0. Библиотека программиста автора Гольцман Виктор Иосифович

Символьные строки Символьная строка состоит из последовательности символов, заключенных в двойные кавычки. Эта последовательность представляется в памяти как массив элементов типа char. Символьная строка представляет в выражении адрес этого массива, т. е. адрес первого


Директива #define

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Директива #define Синтаксис:#define <идентификатор> <текст>#define <идентификатор> <список параметров> <текст>Директива #define заменяет все вхождения <идентификатора> в исходном файле на <текст>, следующий в директиве за <идентификатором>. Этот процесс


3.5. Символьные функции

Из книги Язык Си - руководство для начинающих автора Прата Стивен

3.5. Символьные функции Рассмотрим символьные функции, которые вы можете использовать в выражениях.• BIT_LENGTH(<Строка>).Функция BIT_LENGTH() возвращает длину строки в битах. Например, функция BIT_LENGTH(Крылов) возвращает значение 48 при использовании однобайтовой кодировки и


ИЗУЧЕНИЕ И ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ printf( ) И scanf( )

Из книги C++ для начинающих автора Липпман Стенли

ИЗУЧЕНИЕ И ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ printf( ) И scanf( )      Функции printf( ) и scanf( ) дают нам возможность взаимодействовать с программой. Мы называем их функциями ввода-вывода. Это не единственные функции, которыми мы можем воспользоваться для ввода и вывода данных с помощью


Модификаторы спецификации преобразования, используемые в функции printf( )

Из книги QT 4: программирование GUI на С++ автора Бланшет Жасмин

Модификаторы спецификации преобразования, используемые в функции 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( ), как мы


printf

Из книги автора


9.1.5. Директива extern "C" и перегруженные функции A

Из книги автора

9.1.5. Директива extern "C" и перегруженные функции A В разделе 7.7 мы видели, что директиву связывания extern "C" можно использовать в программе на C++ для того, чтобы указать, что некоторый объект находится в части, написанной на языке C. Как эта директива влияет на объявления