Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР1 - Ввод-вывод в языке программирования C.DOC
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
84 Кб
Скачать
☆

Ввод-вывод в файл по формату

Выполняется функциями fprintf() и fscanf(). Они работают аналогично функциям printf() и scanf(), но им нужен дополнительный параметр для ссылки на файл, который является первым в списке аргументов.

Пример, иллюстрирующий работу этих функций:

#include<stdio.h>

void main()

{

FILE *fi;

int age;

fi=fopen(“sam”,”r”);

fscanf(fi,”%d”,&age);

fclose(fi);

fi=fopen(“data”,”a”);

fprintf(fi,”Sam is %d.\n”,age);

fclose(fi);

}

Ввод-вывод символьных массивов в файл

Выполняется функциями fgets() и fputs().

Рассмотрим использование функций на примере:

#include<stdio.h>

#define MAX 80

void main()

{

FILE *f;

char string[MAX];

f=fopen(“story”,”r”);

while(fgets(string,MAX,f)!=NULL)

fputs(string, stdout);

}

Данная программа выводит содержимое файла “story” в стандартный файл вывода (на экран) строка за строкой.

Функция fgets() имеет три аргумента: символьный массив, предельную длину считываемой строки и указатель на файл. Функция прекращает работу при считывании символа новой строки или после считывания символов общим числом меньше на единицу, чем указывает второй аргумент (в данном примере 79). В любом случае символ ‘\0’ добавляется в конец строки.

Функция возвращает NULL, если встречает символ EOF (символ конца файла), определенный в файле stdio.h как -1.

Функция fputs() записывает строку (свой первый аргумент) в файл, указатель на который является вторым аргументом. Возвращает EOF, если встречается символ EOF, или возникает ошибка.

Мы рассмотрели восемь функций, предназначенных для ввода-вывода при работе с файлами. Существует еще одна функция, которая служит для изменения текущей позиции в файле.

Изменение текущей позиции в файле

Функция fseek() позволяет установить текущую позицию в файле в любое положение. Она имеет три аргумента: указатель на файл, аргумент типа long, указывающий, на сколько символов необходимо сместиться от начального положения (положительный, если смещение происходит вперед, и отрицательный, если назад), и ,наконец, третий аргумент, определяющий начальное положение. Начальное положение определяется символическими константами, определенными в файле stdio.h:

Константа

Значение

Положение

SEEK_SET

0

Начало файла

SEEK_CUR

1

Текущая позиция

SEEK_END

2

Конец файла

Например, оператор

fseek(f,-10,SEEK_END)

делает текущей позицию, находящуюся за десять символов до конца, в файле, на который указывает первый аргумент.

Функция возвращает 0 при успешном выполнении и –1 при возникновении ошибки (например, при попытке передвинуться за границы файла).

Задание

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

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