void clearerr(FILE *stream)
Прототип:
Описание:
Функция clearerr() используется для сброса в 0 флага файловой ошибки, на который указывает stream. Указатель конца файла также сбрасывается.
Флаги ошибки для каждого потока при успешном вызове функции fopen() изначально устанавливаются в 0. После возникновения ошибки флаги остаются установленными до явного вызова функции clearerr() или rewind().
Сигнал о файловой ошибке может выдаваться по самым разным причинам, многие из которых зависят от системы. Точная природа ошибки может быть определена вызовом функции perror(), которая отображает информацию о происшедшей ошибке.
Пример:
Следующая программа копирует один файл в другой. Если встречается ошибка, выводится сообщение и флаг ошибки сбрасывается. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) /* копирование одного файла в другой */ { FILE *in, *out; char ch; if(argc!=3) { printf("You forgot to enter a filename\n"); exit (0); } if((in=fopen(argv[1], "rb")) == NULL) { printf("Cannot open file.\n"); exit (0); } if((out=fopen(argv[2],"wb")) == NULL) { printf("Cannot open file.\n"); exit (0); } while(!feof(in)) { ch = getc (in); if (ferror(in)) { printf("Read Error"); clearerr(in); } else { if(!feof (in)) putc(ch, out); if(ferror(out)) { printf ("Write Error"); clearerr(out); } } } fclose (in); fclose (out); return 0; }
