모두의 코드
C 언어 레퍼런스 - clearerr 함수
작성일 : 2010-02-05
이 글은 4275 번 읽혔습니다.
아직 C 언어와 친숙하지 않다면, 씹어먹는 C 언어 강좌를 보는 것이 어떻까요?
clearerr
#include <stdio.h> // C++ 에서는 <cstdio> void clearerr(FILE* stream);
오류 표시자를 초기화(clear) 한다.
스트림의 EOF 표시자와 오류 표시자를 모두 재설정(reset) 한다.
만일 스트림 함수가 오류 혹은 파일끝에 도달하였기 때문에 실패한다면, 이 두 개의 표시자들 중 하나가 설정된다. 이 표시자들은 rewind, fseek, fsetpos
함수 들 중 어느 하나가 호출 되기 전 까지 변경되지 않는다.
인자
stream
작업을 수행할 스트림의 FILE
객체를 가리키는 포인터
리턴값
없음
실행 예제
/* 인위적으로 오류를 발생시킨 뒤 이 오류가 clearerr 에 의해 어떻게 처리되는지 살펴본다. 이 예제는 http://www.cplusplus.com/reference/clibrary/cstdio/clearerr/에서 가져왔습니다. */ #include <stdio.h> int main() { FILE* pFile; pFile = fopen("myfile.txt", "r"); if (pFile == NULL) perror("Error opening file"); else { fputc('x', pFile); if (ferror(pFile)) { printf("Error Writing to myfile.txt\n"); clearerr(pFile); } fgetc(pFile); if (!ferror(pFile)) printf("No errors reading myfile.txt\n"); fclose(pFile); } return 0; }
실행 결과
이 예제에서 myfile.txt
를 읽기 전용 (r) 로 열었으나, fputc 함수를 이용해 이 파일에 쓰기를 시도하였기 때문에 오류가 발생하였다.
따라서 첫번째 if
문에서 Error Writing to myfile.txt\n 이 출력되었지만, clearerr 함수를 이용하여 오류 플래그를 비워버렸다. 따라서 아래 if
문에서 성공적으로 No errors reading myfile.txt\n 가 출력될 수 있었다.
참고 자료
첫
댓글을 달아주세요!
강좌에 관련 없이 궁금한 내용은
여기를 사용해주세요
또는 직접 입력하세요 (댓글 수정시 비밀번호가 필요합니다)
댓글을 불러오는 중입니다..