Страница 1 из 12
Символьные строки,
директива #define,
функции printf( ) и scanf( )
В этой главе мы продолжим нашу "игру" с данными покопаемся в вопросах, выходящих за пределы тех, которые были связаны с типами данных, и рассмотрим символьную строку Сначала опи шем важное средство языка - препроцессор Си - и узнаем, как задавать и использовать символические константы. Затем вновь об судим способы ввода и вывода данных, при этом более полно ис следуем возможности функций printf( ) и scanf( ). Ну, а теперь вы вероятно, ожидаете примера программы, который должен быть помещен в начале главы; мы не будем вас разочаровывать и приве дем его
/* непринужденный разговор */ # define DENSITY 62 4 /* плотность тела человека в фунтах на кубический фут */ main( ) /* любопытствующая программа*/ { float weight, volume; int size, letters; char name [40]; /* или попробуйте "static char name [40], */ printf(" Привет! Как вас зовут?\n" ); scanf(" %s" , name); printf("%s, Каков ваш вес в фунтах?\n", name); scani("%f", &weight); size = sizeof name; letters = strlen (name); volume = weight/DENSITY; printf(" Прекрасно, %s, ваш объем %2 2f кубических фута.\n", name, volume); printf(" Кроме того, ваше имя состоит из %d букв,\n", letters); printf(" и для его размещения в памяти у нас есть %d байт.\n", size); }
Результат работы программы "непринужденный разговор" может, например, выглядеть следующим образом:
Привет ! Как вас зовут? Анжелика Анжелика Каков ваш вес в фунтах? 102,5 Прекрасно, AНЖЕЛИКА ваш объем 1,64 кубических фута Кроме того, ваше имя состоит из 8 букв и для его размещения в памяти у нас есть 40 байт
Перечислим основные новые черты этой программы:
1. Мы использовали "массив" для хранения "символьной строки" - в данном случае для некоторого имени.
2. При вводе и выводе строки была использована "спецификация преобразования" %s.
3. Для определения символической константы DENSITY был использован препроцессор языка Си.
4. Для нахождения длины строки была использована функция strlen( ).
Способ ввода-вывода, реализованный в языке Си, может показаться вначале несколько более сложным по сравнению с вводом-выводом, предусмотренным, например, в Бейсике. Однако эта сложность окупается улучшенными возможностями управления вводом-выводом и большей эффективностью получаемых программ. Указанная трудность - не единственная, с которой вы столкнетесь в дальнейшем. Давайте исследуем все новые моменты более детально.
|