Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
12_Inf_v3_Potopahin.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
103 Кб
Скачать
☆

Ввод – вывод

В С++ существует две возможности ввода/вывода данных – форматный и неформатный ввод/вывод. Неформатный ввод/вывод осуществляется посредством следующих команд

>> ввод

<< вывод

Но чтобы ими пользоваться необходимо ввести ещё одно понятие – понятие потока данных. С++ полагает, что любая программа всегда имеет дело с двумя потоками байтов данных: входным потоком и выходным. Из входного потока программа получает данные и результаты своей обработки направляет в выходной поток.

Внутри этих потоков нет целых, действительных или массивов или строк. Потоки не имеют структуры. При вводе данные побайтно выбираются из потока и передаются в структуры определённые в программе и уже в них обретают смысл как элементы массива, символы и т.д.

Потоки данных имеют следующие имена:

cin - входной поток

cout - выходной поток

Пример 1. Ввести массив символов

#include <stdio.h>

#include <iostream.h>

void main()

{ int i; char [10];

for (i=0;i<=10;i++) cin >> a[i];

for (i=0;i<=10;i++) cout << a[i];

}

Пример 2. Ввести список номеров имеющих следующий формат (символ, целое число)

#include <stdio.h>

#include <iostream.h>

void main()

{ int i; char a[10];int d[10];

for (i=0;i<=3;i++)

cin >> a[i] >> d[i];

for (i=0;i<=3;i++)

cout << a[i] << “ ” << d[i] << “\n”

}

“\n” – управляющий символ перевода на новую строку.

Форматный ввод/вывод в С++

Для форматного ввода/вывода в С++ предусмотрены две библиотечные функции:

scanf – функция для ввода данных

printf – функция для вывода данных

Они имеют следующий общий вид:

scanf или printf(“Описание формата”, список переменных)

Описание формата может содержать описатели формата и строки символов. Описатель формата устроен следующим образом:

% символ идентифицирующий формат. Для примера запишем программу последнего примера с помощью функций prinf и scanf.

#include <stdio.h>

#include <iostream.h>

void main()

{ int i; char a[10];int d[10];

for (i=0;i<=3;i++)

scanf("%c%d",&a[i], &d[i]);

for (i=0;i<=3;i++)

printf("simbol %c chislo %d \n",a[i],d[i]);

}

Здесь применяются следующие описатели формата:

с – символ

d – целое

Для дальнейшей работы нам к этому списку пока достаточно добавить ещё описатель f – указывающий на ввод величины типа float.

Две полезных функции

Gotoxy(int, int) – установка курсора на экране монитора

Clrscr() – очистка экрана в символьном режиме.

Ввод/вывод из файлов

Работа с файлами требует выполнения следующих шагов:

  1. Создать файловую переменную.

  2. Открыть файл.

  3. Выполнить требуемые операции чтения, записи.

  4. Закрыть файл.

Файловая переменная

Для создания переменной файлового типа имеется специальный тип FILE. Объявление файловой переменной выполняется так

FILE * имя переменной.

Открытие файла

Для открытия файла используется процедура fopen. Она для своей работы требует указания имени файла и способа доступа. Способ доступа – это указание на то, что можно делать с этим файлом. Нам для дальнейшей работы необходимо два способа доступа r – доступ на чтение; w – доступ на запись.

Способы доступа можно указывать одновременно, ниже пример того, как это можно делать.

Работа с файлом

Для операций чтения/записи в С++ используются функции fprintf и fscanf. В отличии от функций scanf и printf для них требуется указать файловую переменную.

Закрытие файла

Для закрытия используется функция fclose (файловая переменная)

#include <stdio.h>

void main()

{ FILE *h; так объявляется файловая переменная

h=fopen("file.dat", "w"); файл открывается на запись

for (int i=1;i<=100;i++) fprintf(h,"%d\n",i); записываются сто целых

fclose(h); файл закрывается

h=fopen("file.dat", "r"); файл открывается на чтение

int a;

for (i=1;i<=100;i++)

{fscanf(h,"%d\n",&a); читается сто целых

printf("%d\n",a); прочитанные числа выводятся на экран.

}

}

Программа записанная ниже решает ту же задачу, что и программа записанная выше, той разницей, что она использует функцию установки файловой переменой в определенную позицию. Её формат следующий:

FSEEK(файловая переменная, позиция, точка отсчёта)

Позиция – число байт которые необходимо отсчитать от точки отсчёта.

Точка отсчёта – точка от которой отсчитывается указанная позиция. Есть несколько способов указать такую точку.

  • SEEK_SET отсчёт от начала файла.

  • SEEK_CUR отсчёт от текущей позиции

  • SEEK_END отсчёт от конца файла

#include <stdio.h>

void main()

{ FILE *h;

h=fopen("file.dat", "wr");

for (int i=1;i<=100;i++) fprintf(h,"%d\n",i);

fseek(h,0,SEEK_SET);

int a;

for (i=1;i<=100;i++)

{fscanf(h,"%d\n",&a);

printf("%d\n",a);

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]