Функция записывает <count> записей, каждая размером size байтов из области *buf в выходной поток stream. Указатель файла, связанный с потоком stream увеличивается на количество записанных байт. Функция возвращает количество явно помещенных в файл записей, т.е. если возвращаемое значение будет <count>, то была ошибка.
Неформатированное чтение данных из потока.
int fread(viod *buf, int size, int count, FILE *stream);
Функция читает <count> элементов данных, каждый размером size байт из выходного потока stream и помещает в область buf. Указатель файла увеличивается на число прочитанных байт. Функция возвращает количество реально прочитанных элементов, которое может быть<count>, если имела место ошибка, или встретился конец файла, раньше, чем было прочитано count элементов.
2. Символьный ввод \вывод.
Чтение – запись символа.
- int fgetc(FILE * stream) – функция читает один символ из указанного файла с текущей позиции, далее это значение приводится к типу int и указатель файла перемещается на следующий символ. Возвращает EOF, если произошла ошибка или достигнут конец файла.
- int fputc(char ch, FILE *<имя файловой переменной>) – символ ch записывается в указанный выходной поток. Если запись произошла успешно возвращается значение ch целого типа, иначе EOF.
Чтение – запись строки.
- char * fgets(char *s, int n, FILE * stream) – читает строку из указанного входного потока и помещает по адресу s. Символы читаются из файла до тех пор, пока не будет прочитан символ новой строки, который включается в строку s или пока не будет достигнут конец потока, или пока не будет прочитано (n-1) символов; результат помещается в строку s и завершается строка символом ‘\0’. Если считывание произошло успешно, то возвращается адрес строки s, иначе NULL.
- int fputs(char *s, FILE *stream) – функция копирует строку s в указанный поток, причем ‘\0’ отбрасывается. Если при записи возникает ошибка, функция возвращает признак EOF, иначе последний записанный символ.
1. Форматированный ввод\вывод.
Запись данных в поток по формату.
int fprintf(FILE *stream, char *<форматная строка>[,<аргумент>]);
Функция выполняет форматные преобразования данных, предназначенных для вывода и печати последовательности символов в выходной поток. Каждый аргумент преобразуется и выводится согласно формату преобразования, определенному в форматной строке.(Вид форматной строки смотреть в функции printf) Функция возвращает количество выведенных символов.
Чтение из потока по формату.
int fscanf(FILE *stream, char * formatstring[,<аргумент>])
Функция читает данные из указанного входного потока, выполняет форматные преобразования и полученное значение записывает в переменные, адреса которых задаются последним параметром. Форматная строка имеет вид, что и у scanf. Функция возвращает количество успешно прочитанных элементов ввода, или признак EOF, если достигнут конец файла.
Пример:
Создать файл результатов сдачи экзаменов группой студентов по определенному предмету.
#include<alloc.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <dir.h>
struct stud
{char fio[20];
float reit;} ;
char gr[8],course[20], *im_f;
FILE * ved;
struct stud st;
create(void)
{int kol, i;
float sum=0;
im_f=(char*)malloc(13);
printf("Имя файла ");gets(im_f);
ved=fopen(im_f,"w");
if(ved==NULL)return(-1);
printf("Группа:");gets(gr);
fprintf(ved,"Группа :%s\n",gr);
printf("Предмет:");gets(course);
fprintf(ved,"Предмет:%s\n",course);
printf("Кол-во студентов '');scanf("%d",&kol);
for(i=0;i<kol;i++)
{printf("Фамилия");scanf("%s",&st.fio);
printf("Оценка");scanf("%f",&st.reit);
sum+=st.reit;//сумма оценок для подсчета среднего бала группы
fprintf(ved,"%-2d %-20s %-5.2f\n",i=1,st.fio,st.reit);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.