Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по С++.doc
Скачиваний:
27
Добавлен:
20.08.2019
Размер:
2.26 Mб
Скачать

Операторы передачи управления

Формат оператора: continuo ;

Оператор направляет поток управления внутри цикла. Он заставляет прекратить текущую итерации цикла и немедленно начинает следующую. Оператор continuo может использоваться только внутри тела операторов while, for, do while.

Формат оператора: break ;

Использование оператора состоит в том, чтобы завершить выполнение цикла досрочно. Оператор вызывает выход из оператора while, for, do while, switch. Управление передается оператору, непосредственно следующему за оператором цикла или переключателем.

ФОРМАТИРОВАННЫЙ ВВОД-ВЫВОД ДАННЫХ ТЕКСТОВЫХ ФАЙЛОВ

Функции для форматного ввода данных

Форматный ввод данных осуществляется с помощью функций scanf, fscanf, sscanf и cscanf. Все названные функции вводят значения, интерпретируют их в соответствии с "типом форматов, преобразуют их'в соответствии с типом аргу­ментов и присваивают введенные значения переменным. Правила использова­ния форматов и аргументов этих функций идентичны. Рассмотрим их более детально.

Прототип функции scanf:

int scanf (char * format [ , arg...] );

С помощью функции scanf осуществляется ввод данных из стандартного вводного потока stdin (с клавиатуры) в переменные, адреса которых задаются аргументами (arg). Функция имеет переменное количество параметров. Значение первого параметра format определяет адрес строки, которая управляет интерпретацией элементов ввода. Последующие аргументы представляют собой список адре­сов, переменных, значения которых должны быть введены в соответствии с форма­тами параметра format. Каждый последующий аргумент должен быть указателем на переменную типа, совместимого с типом, определенным очередным форматом в параметре format. Строка format обрабатывается слева направо: первому формату соответствует первый аргумент, второму - второй и т. д.

Прототип функции fscanf:

int fscanf (File * stream, char * format [ , arg ... ], );

где stream - указатель для файла, из которого производится ввод.

Функция читает данные из файла, связанного с указателем stream.

Прототип функции sscanf:

int sscanf (char * string, char * format [ , arg ... ], );

где string - указатель на строку, из которой производится ввод, Функция sscanf читает данные из строки string.

Прототип функции cscanf:

int cscanf (char * format [ , arg ... ], );

Функция cscanf читает данные, введенные с консоли (с клавиатуры). Возвращаемое значение функций типа scanf.

- количество успешно введенных и присвоенных значений;

- значение 0, если ввод неудачен, нет значений, которые введены и присвое­ны переменным;

- значение EОF, если чтение производится по концу файла.

Все функции типа scanf вводят последовательно значения из полей входно­го потока, интерпретируя их в соответствии с их форматом. Первое введенное значение интерпретируется в соответствии с первым форматом строки format, преобразуется в форму хранения переменной аргумента и заносится по адресу первого аргумента. Значение из следующего поля интерпретируется в соответ­ствии со вторым форматом и т. д. до конца строки format.

Если количество форматов в строке scanf c больше, чем аргументов - указа­телей вводимых значений:

- при вводе данных с клавиатуры система останавливается и ожидает ввода данных для лишних форматов;

- при вводе из файла с помощью fscanf - результат не определен. . .

Если аргументов в списке больше, чем форматов в строке format, лишние аргументы игнорируются, не получают новых значений.

... Соответствие типов форматов типам переменных аргументов не контроли­руется транслятором. То есть можно определить формат “%f” для переменной типа int. Но при выполнении программы это несоответствие приведет к ава­рийному завершению программы.

Если при вводе очередных значений из входного файла в нем встретился символ конца строки (\n), а форматы и элементы списка аргументов не исчер­паны, происходит автоматический переход на следующую строку входного по­тока и ввод продолжается со следующей строки. То есть при переходе к сле­дующему полю функция fscanf может "перешагивать" через границы строк. Таким образом, если с помощью fscanf вводится последовательно ряд значений из ряда строк текстового файла, длины которых не кратны количеству пози­ций, вводимых за одно выполнение функции fscanf, то ввод очередных значе­ний начинается с позиции, на которой закончен предыдущий ввод.

Форматы ввода данных

Строка описания форматов ввода может содержать: