- •1. Понятие и состав языка программирования. Машинные и символьные языки.
- •2. Понятие и состав системы программирования.
- •3. Описание алгоритмических языков. Формулы бнф.
- •4. Описание алгоритмических языков. Синтаксические диаграммы.
- •5.Типы ошибок в программах. Понятие отладки и отладчиков.
- •6.Алфавит си
- •7.Константы. Их типы синтаксис записи.
- •8. Структура программы на языке си
- •9. Стандартные скалярные типы данных. Описание переменных.
- •10 Операции отношения и Арифметические операции
- •11 Логические операции
- •12 Операция запятая
- •13. Операцию присваивания
- •14 Оператор while формально записывается в таком виде:
- •15 Оператор do-while формально записывается следующим образом:
- •16 Операторы цикла for
- •19 Указатели и операции с ними
- •20 Массивы
- •21 Структуры
- •22 Объединения
- •23 Перечислимый тип данных
- •24 Функции
- •25 Классы переменных
- •28 Форматированный ввод данных
- •29 Форматированный вывод данных
- •30 Стандартные включаемые файлы
- •31 Функции работы со строками c
- •32 Динамическое распределение памяти. Функции malloc( ) и free( )
- •33 Основной задачей программирования является обработка информации,
- •34 Потоковый ввод/вывод
- •35 Работа с файлами
- •36 Блочный Ввод-Вывод
34 Потоковый ввод/вывод
В языке С++ был разработан другой способ ввода/вывода с использованием так называемых потоков ввода и вывода.
Использование стандартных потоков cin и cout
Для того чтобы использовать стандартные потоки для ввода и вывода, необходимо включить заголовочный файл <iostream>. Для ввода используется операция >>, для вывода – операция <<. Компилятор определяет тип вводимой/выводимой переменной и соответствующим образом форматирует её.
#include <iostream>
using namespace std;
cin >> x; // Ввод значения в переменную x из стандартного потока cin
cout << x; // Вывод значения переменной x в стандартный поток cout
cin >> x >> y; // Ввод двух переменных
cout << "x = " << x << "\ny = " << y << endl; // Функция endl осуществляет перевод строки
Если при вводе или выводе произошла ошибка, в переменной состояния потока устанавливается соответствующий флаг. Проверить его значение можно с помощью функции fail.
cin >> x;
if (cin.fail())
cout << "Произошла ошибка при вводе\n";
35 Работа с файлами
Объявление файловой переменной
– FILE *file;
Открытие файла
– FILE *fopen(char *name, char *mode);
Проверка достижения конца файла
– int feof(FILE *file);
Закрытие файла
– int fclose(FILE *file);
FILE – специальная структура, объявленная в файле <stdio.h>, которая используется при работе с файлами. Для работы с файлом нужно объявить переменную FILE *<имя>.
Функция fopen используется для открытия файла. Первый параметр задаёт имя файла. Второй параметр mode задаёт требуемый тип доступа к файлу.
Mode Действие
"r" Открытие для чтения. Если файл не существует или не может быть найден, функция fopen возвращает признак ошибки.
"w" Открытие для записи. Если файл существует, его содержимое уничтожается. Если файл не существует, он создаётся.
"a" Открытие для добавления. Если файл не существует, он создаётся.
"r+" Открытие для чтения и записи. Файл должен существовать.
"w+" Открытие пустого файла для чтения и записи. Если файл существует, его содержимое уничтожается.
"a+" Открытие для чтения и добавления. Если файл не существует, он создаётся.
Кроме того, к параметру mode могут быть добавлены символы t и b для задания текстового и двоичного режимов соответственно. По умолчанию используется текстовый режим.
В случае ошибки функция fopen возвращает значение NULL.
1.3.1. Текстовый режим
При вводе/выводе в текстовом режиме происходит преобразование между внешним представлением значения и внутренним (машинным) представлением этого значения.
Ввод одного символа
– int getc (FILE *file);
Вывод одного символа
– int putc (int c, FILE *file);
Ввод
– int fscanf (FILE *file, char *format, ...);
Вывод
– int fprintf(FILE *file, char *format, ...);
Ввод строки
– char* fgets (char *line, int maxline, FILE *file);
Вывод строки
– int fputs (char *line, FILE *file);
1.3.2. Двоичный режим
В двоичном режиме никаких преобразований не производится, внутреннее представление значения записывается в файл. Для открытия файла в двоичном режиме необходимо в параметр mode функции fopen добавить символ b.
Ввод из двоичного файла
– unsigned fread (void *buf, int bytes, int num, FILE *file);
Вывод в двоичный файл
– unsigned fwrite (void *buf, int bytes, int num, FILE *file);
Функция fread читает из файла file в переменную buf num элементов, каждый размером bytes байт. Функция fwrite записывает в файл file из переменной buf num элементов, каждый размером bytes байт. Функции возвращают количество прочитанных/записанных элементов.
В двоичном режиме возможен прямой доступ к файлу:
int fseek(FILE *file, long nbytes, int origin)
Данная функция смещает указатель в файле file на nbytes байт с позиции, определяемой параметром origin. При этом параметр origin может принимать следующие значения:
SEEK_SET 0 – начало файла;
SEEK_CUR 1 – текущая позиция указателя;
SEEK_END 2 – конец файла.
Функция long ftell(FILE *file) возвращает текущую позицию указателя в файле file.
fseek(file, 0, SEEK_END);
n = ftell(file);