Функция
#include<stdio.h>
int fflush(FILE * stream);
записывает в файл содержимое буфера, связанного с потоком stream, если он был открыт на вывод. Функция fflush не оказывает влияния на не буферизованные потоки.
В случае успешного завершения возвращает 0. При ошибке возвращает EOF.
Пример:
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<io.h>
void flush(FILE *stream);
int main(void)
{
FILE *stream;
char msg[] = "Тестовый пример";
/* создать файл */
stream = fopen("DUMMY.FIL","w");
/* записать в файл данные */
fwrite(msg,strlen(msg),1,stream);
clrscr();
printf("Для сброса потока нажмите любую клавишу...\n");
getch();
/* сбросить данные в файл, без его закрытия */
flush(stream);
printf("Содержимое буферов сброшено в файл\n");
printf("Для завершения нажмите любую клавишу\n");
getch();
return 0;
}
void flush(FILE *stream)
{
int duphandle;
/* сбросить внутренние буфера файла */
fflash(stream);
/* создать второй дескриптор */
duphandle = dup(fileno(stream));
/* закрыть второй дескриптор для сброса буферов DOS */
close(duphandle);
}
Функция fgetpos
Функция
#include<stdio.h>
int fgetpos(FILE * stream, fpos_t *pos);
сохраняет позицию указателя файла, связанного с потоком stream, в месте, указываемом pos.
Тип fpos_t описывается следующим образом:
typedef long fpos_t;
При успешном завершении fgetpos возвращает 0. При ошибке возвращает ненулевое значение и устанавливает errno в EBADF или EINVAL.
Пример:
#include<string.h>
#include<stdio.h>
int main(void)
{
FILE *stream;
char string[] = "Тестовый пример";
fpos_t filepos;
/* создать файл для его изменения */
stream = fopen("DUMMY.FIL","w+");
/* записать в файл данные */
fwrite(string,strlen(string),1,stream);
/* сообщить положение указателя */
fgetpos(stream,&filepos);
printf("Указатель находится в %ld позиции\n");
fclose(stream);
return 0;
}