- •Лабораторная работа n 1 Ввод-вывод в языке программирования c
- •Теоретические положения
- •Простой ввод-вывод
- •Ввод и вывод данных
- •Стандартные типы данных в с
- •Файловый ввод-вывод
- •Открытие файла
- •Закрытие файла
- •Ввод-вывод одиночного символа в файл
- •Ввод-вывод в файл по формату
- •Ввод-вывод символьных массивов в файл
- •Изменение текущей позиции в файле
- •Задание
- •Варианты заданий
Ввод-вывод в файл по формату
Выполняется функциями 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 при возникновении ошибки (например, при попытке передвинуться за границы файла).
Задание
Написать программу, реализующую обработку данных и файловый ввод-вывод соответственно варианту задания. Работа программы должна включать ввод пользователем с клавиатуры имен входного и выходного файлов. Результат работы программы сохраняется в выходном файле, а также выводится на экран. Во время работы программы пользователю должны выводиться на экран сообщения, поясняющие каждый этап работы программы.
