Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Символы в управляющей строке, не являющиеся разделителями




Если в управляющей строке находится символ, не являющийся разделителем, то функция scanf() прочитает символ из входного потока, проверит, совпадает ли прочитанный символ с указанным в управляющей строке, и в случае совпадения пропустит прочитанный символ. Например, "%d,%d" заставляет scanf() прочитать целое значение, прочитать запятую и пропустить ее (если это была запятая!), а затем прочитать следующее целое значение. Если же указанный символ во входном потоке не будет найден, то scanf() завершится. Когда нужно прочитать и отбросить знак процента, то в управляющей строке следует указать %%.

Модификаторы формата

Как и printf(), функция scanf() дает возможность модифицировать некоторое число своих спецификаторов формата. В спецификаторах формата моно указать модификатор максимальной длины поля. Это целое число, расположенное между % и спецификатором формата; оно ограничивает число символов, считываемых из этого поля. Например, чтобы считывать в переменную str не более 20 символов, пишите

scanf("%20s", str);

Если поток ввода содержит больше 20 символов, то при следующем вызове функций ввода считывание начнется после того места, где оно закончилось при предыдущем вызове. Например, если вы в ответ на вызов scanf() из этого примера введете

ABCDEFGHIJKLMNOPRSTUVWXYZ

то в str из-за спецификатора максимальной ширины поля будет помещено только 20 символов, то есть символы вплоть до Т. Это значит, что оставшиеся символы UVWXYZ пока еще не прочитаны. При следующем вызове scanf(), например при выполнении оператора

scanf("%s", str);

в str будут помешены буквы UVWXYZ. Ввод из поля может завершиться и до того, как будет достигнута максимальная длина поля – если встретится разделитель. В таком случае scanf() переходит к следующему полю.

Чтобы прочитать длинное целое, перед спецификатором формата поместите l (эль). А для чтения короткого целого значения перед спецификатором формата следует поместить n. Эти модификаторы можно использовать со следующими кодами форматов: d, i, o, u, x и n.

По умолчанию спецификаторы f, e и g дают scanf() указание присваивать данные переменной типа float. Если перед одним из этих спецификаторов будет помещен l (эль), то scanf() будет присваивать данные переменной типа double. Использование L дает scanf() указание, чтобы переменная, принимающая данные, имела тип long double.

Если в компиляторе предусмотрена обработка двухбайтовых символов, то модификатор l можно также использовать с такими кодами формата, как c и s. l непосредственно перед c является признаком указателя на объект типа wchar_t. А l непосредственно перед s – признак указателя на массив элементов типа wchar_t. Кроме того, l также применяется для модификации набора сканируемых символов, чтобы этот набор можно было использовать для двухбайтовых символов.

5.3. Дополнительные возможности ввода-вывода в языке С++

Язык С++ имеет свою библиотеку ввода-вывода. Она находится в файле iostream.h. Этот файл содержит средства управления потоками ввода-вывода.

Ввод, идущий с клавиатуры пользователя, называется стандартным входным потоком или стандартным вводом. Он связывается с предопределенным в iostream.h потоком cin. Вывод, направляемый на экран пользователя, называется стандартным выходным потоком или стандартным выводом. Он связывается с предопределенным в iostream.h потоком cout.

Операция вывода << направляет значение в стандартный выходной поток.

cout << index;

Для перехода на новую строку существуют два способа. Первый – это использовать определенный в iostream.h манипулятор endl. Манипулятор можно выводить в поток и при этом он меняет параметры вывода. Здесь endl вызовет переход на новую строку

cout << endl;

Второй способ – это явно вывести в поток символ новой строки. В С++ он записывается двумя символами: '\n'.

cout << '\n';

Одиночные кавычки ограничивают символ. Такой символ может быть внутри строки символов, например оператор

cout << "Программа на С++\n";

вызовет переход на новую строку после вывода данного сообщения.

В одном операторе вывода можно соединять несколько операций. Например:

cout << "Значение index равно: " << index << endl;

Вывод осуществляется по порядку, считая слева направо.

Аналогично операция ввода >> читает значение из стандартного входного потока, например:

cin >> index;

Такие операции тоже можно соединять в одном операторе. Например, если в программе встретится следующий оператор:

cin >> i1 >> i2;

то программа будет ждать ввода с клавиатуры двух величин и первую из них поместит в переменную i1, а вторую – в переменную i2. Эти две вводимых величины можно разделять пробелом или табуляцией, а можно каждую из них вводить с новой строки – операция ввода сработает правильно.

Пример.

#include <iostream.h>

void main()

{

int i;

cout << "Введите целое число\n";

cin >> i;

cout << "Вы ввели число << i << ", спасибо!";

}

 


Приложение

Операции языка С++

Прио-ритет Знаки операций Название операций Порядок выполнения
  :: разрешение области видимости слева направо
  . -> [ ] () ++ -- typeid dynamic_cast static_cast reinterpret_cast const_cast выбор элемента по имени выбор элемента по указателю выбор элемента по индексу вызов функции или конструирование значения постфиксный инкремент постфиксный декремент идентификация типа преобразование с проверкой при выполнении преобразование с проверкой при компиляции преобразование без проверки константное преобразование слева направо
  sizeof ++ -- ~ ! + - & * new delete (имя_типа) размер операнда в байтах префиксный инкремент префиксный декремент инверсия (поразрядное НЕ) логическое НЕ унарный плюс унарный минус адрес разыменование выделение памяти или создание освобождение памяти или уничтожение преобразование типа справа налево
  .* ->* выбор элемента по имени через указатель выбор элемента по указателю через указатель слева направо
  * / % умножение деление остаток от деления целых слева направо
  + - сложение вычитание слева направо
  << >> сдвиг влево сдвиг вправо слева направо
  < <= > >= меньше меньше или равно больше больше или равно слева направо
  == != равно не равно слева направо
  & поразрядное И слева направо
  ^ поразрядное исключающее ИЛИ слева направо
  | поразрядное ИЛИ слева направо
  && логическое И слева направо
  || логическое ИЛИ слева направо
  ?: условная справа налево
  = *=,.=, %=, +=, -= <=, >>=, &=, ^=, |= присваивание (простое и составное) справа налево
  throw генерация исключения справа налево
  , последовательность выражений слева направо

Содержание

Глава I. ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА С++. 1

1. Состав языка С++. 1

1.1. Алфавит языка. 2

1.2. Идентификаторы.. 2

1.3. Ключевые слова. 4

1.4. Знаки операций. 4

1.5. Константы.. 4

1.6. Комментарии. 6

2. Структура программы на языке С++. 7

2.1. Стадии прохождения программы.. 7

2.2. Немного о функциях языка С++. 8

2.3. Общая структура программы на С++. 9

3. Типы данных С++. Переменные. 9

3.1. Концепция типа данных. 9

3.2. Основные типы данных. 10

3.3. Переменные. 13

4. Операции и выражения. 15

4.1. Выражение и его интерпретация. 15

4.2. Арифметические операции. 16

4.3. Операции отношения. 18

4.4. Логические операции. 18

4.5. Операции с разрядами. 19

4.6. Операции сдвига. 20

4.7. Операция условия. 20

4.8. Операция присваивания. 21

4.9. Операция sizeof 22

4.10. Преобразование типов. 23

4.11. Порядок выполнения операций. 23

5. Форматный ввод и вывод данных. 24

5.1. Форматный вывод: функция printf() 24

5.2. Форматный ввод: функция scanf() 31

5.3. Дополнительные возможности ввода-вывода в языке С++. 35

Приложение 37

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...