Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МВ_Прог_1курс_2часть.doc
Скачиваний:
8
Добавлен:
09.09.2019
Размер:
1.02 Mб
Скачать

Другие функции форматного ввода и вывода

Ниже перечислены другие функции форматного вывода с указанием заголовочного файла и выходного потока.

cprintf

CONIO.H

Консоль

fprintf

STDIO.H

Поток

printf

STDIO.H

stdout

sprintf

STDIO.H

Строка

То же для форматного ввода.

cscanf

CONIO.H

Консоль

fscanf

STDIO.H

Поток

scanf

STDIO.H

stdin

sscanf

STDIO.H

Строка

Примеры

Пример. Вводить строки с клавиатуры и сохранять их в текстовом файле.

char buf[100];

FILE *F;

F = fopen("111.txt", "w");

for (;;) {

gets(buf);

if (strlen(buf) > 40)

break;

fputs(buf, F);

fputs("\n", F);

}

fclose(F);

Замечания. Функция gets вводит строки из стандартного входного потока stdin. При вводе с клавиатуры символ '\n' не попадает в строку. Если вводить при помощи функции

fgets(buf, 100, F), то специального вывода fputs("\n", F) не понадобится.

Пример. Имеется текстовый файл. Напечать его самую длинную строку.

char buf[100], maxbuf[100];

FILE *F;

maxbuf[0] = 0;

F = fopen("111.txt", "r");

while (!feof(F)) {

fgets(buf, 100, F);

if (strlen(buf) > strlen(maxbuf) )

strcpy(maxbuf, buf);

}

fclose(F);

fputs(maxbuf, stdout);

Замечания. Вывод строки в поток stdout можно выполнить функцией

puts(maxbuf);

Пример. Вводить целые числа с клавиатуры и сохранять их в двоичном файле.

int buf;

FILE *F;

F = fopen("111.dat", "w");

for (;;) {

scanf("%d", &buf);

if (!buf)

break;

fwrite(&buf, sizeof(int), 1, F);

}

fclose(F);

Замечания. Для ввода целых чисел из входного потока необходимо использовать только форматный ввод (scanf или fscanf.).

Полученный файл не является текстовым и может быть правильно прочитан только функцией fread.

3.3 Порядок виконання роботи

3.4 Контрольні запитання та завдання

  1. На какие группы можно разделить библиотечные функции ввода-вывода?

  2. Что такое поток?

  3. Можно ли открыть поток, не открывая файла?

  4. Как открыть поток в двоичном режиме?

  5. Что возвращает функция fopen?

  6. Какая функция выводит символ в стандартный выводной поток?

  7. Какие функции читают и записывают строку в поток?

  8. Как установить указатель на конец потока, открытого для чтения?

  9. Как проверить, достиг ли указатель потока конца файла?

  10. Как проверить, нет ли ошибки при работе с потоком?

  11. Можно ли сбросить индикатор ошибки, не закрывая потока?

  12. Какая функция выполняет форматированный вывод в поток?

  13. Чем отличается функция printf от функции fprintf?

  14. Что такое поле ввода для функции fscanf?

  15. Как устроена строка формата функции fscanf?

3.5 Завдання

Выполнить варианты заданий лабораторной работы при условии что исходные данные хранятся в текстовом файле и первые числа соответствуют указывают размер массива. Необходимо считать исходные данные вывести их на экран и в файл.

Исходные данные необходимо записать также в бинарный файл. Результаты обработки исходных данных необходимо сохранить в текстовый, бинарный файл, а также вывести на экран в удобном для пользователя виде.