Stdio.h

소문자 C 표준 라이브러리 **stdio.h**은 Standard Input/Output library (표준입출력 라이브러리)의 약어로써, C 언어의 표준 라이브러리 함수의 매크로 정의, 상수, 여러 형의 입출력 함수가 포함된 헤더 파일이다. 1970년대, 벨 연구소의 마크 레스크가 쓴 "portable I/O package"page=200로부터 내려저 왔다. C++에서는 호환성을 이유로 `stdio.h` 헤더 파일이 포함되어 있는 것과 마찬가지로 **cstdio**도 std 이름공간에서 `stdio.h`의 함수와 형식이 선언되어 있다.
# 예제
라이브러리 함수 (및 변종들)는 헤더 파일에 정의되어 있다. 그러므로, 프로그래머는 헤더 파일에 정의된 함수를 사용하기 위해 반드시 `stdio.h` 헤더 파일을 소스 코드에 포함해야 한다. #include int main() { int ch; while ((ch = getchar()) != EOF) putchar(ch); putchar('\n'); return 0; } 위의 프로그램은 바이트에 의해 바이트로 표준 입력으로 입력하고, 표준 출력으로 출력한다. 그리고 출력의 끝에 개행 문자를 추가한다.
# 멤버 함수
`stdio.h`에 선언되어 있는 함수는 일반적으로 파일 조작 함수와 콘솔 입출력 함수 둘로 구분된다. {| class="wikitable" |- ! 이름||해설 |- !colspan=2 |파일 조작 함수 |- |`fopen, freopen` || 파일을 읽거나 쓴다. |- |`fclose` || 파일을 닫는다. |- |`remove` || 파일을 삭제한다. |- |`rename` || 파일 이름을 바꾼다. |- |`rewind` || 파일 위치를 초기화한다.출판사=FALINUX Forumurl=http://forum.falinux.com/zbxe/?document_srl=408247 |- |`tmpfile` || 임시 파일을 만들고 연다. fclose()로 닫으면 임시 파일이 삭제된다. |- !colspan=2 |콘솔 입출력 함수 |- |`clearerr` || end-of-file와 주어진 스트림에 대한 오류 지시자를 지운다. |- |`feof` || end-of-file 지시자가 주어진 스트림으로 설정되어 있는지 검사한다. |- |`ferror` || 오류 지시자가 주어진 스트림으로 설정되어 있는지 검사한다. |- |`fflush` || 보류 중인 버퍼된 **출력**을 주어진 스트림의 파일에 강제로 쓴다. |- |`fgetpos` || 첫 번째 변수 (FILE *)부터 두 번째 변수 (fpos_t *)의 파일 위치 지시자를 저장한다. |- |`fgetc` || 파일로부터 한 개의 문자를 리턴한다. |- |`fgets` || 파일로부터 문자열을 읽는다. (파일의 끝이거나 개행 문자의 끝) |- |`fputc` || 한 문자를 파일에 입력한다. |- |- |`fseek` || 파일을 찾는다. |- |`fsetpos` || 기억된 첫 번째 인수(FILE *) 두 번째 인수(fpos_t *) 까지의 파일 위치 지시자를 설정한다. |- |`fread` || 파일로부터 데이터를 읽어들인다. |- |`fwrite` || 파일로부터 데이터를 쓴다. |- |`getc` || 주어진 스트림으로부터 문자를 읽고 리턴한다. 강화된 파일 지시자로서, 주어진 스트림을 한 번 이상으로 평가하는 fgetc와 같은 효과를 내는 매크로이다. |- |`getchar` || getc(stdin)와 같은 효과를 낸다. |- |`gets` || stdin이 개행문자를 발생시키고 인수에 저장할 때까지 문자를 읽는다. |- |`printf, vprintf` || 표준 출력 스트림에 출력한다. |- |`fprintf, vfprintf` || 파일로 출력한다. |- |`sprintf, snprintf, vsprintf, vsnprintf` || 문자 배열로 출력한다. (C 문자열) |- |`perror` || stderr에 오류 메시지를 쓴다. |- |`putc` || 스트림에 문자를 쓴다. |- |`putchar, fputchar` || putc(stdout)와 같은 효과를 낸다. |- |`scanf, vscanf` || 표준 입력 스트림으로 입력한다. |- |`fscanf, vfscanf` || 파일로 입력한다. |- |`sscanf, vsscanf` || 문자 배열로부터 입력한다. (예: C 문자열) |- |`setbuf, setvbuf` || 주어진 스트림에 버퍼링 모드로 전환한다. |- |`tmpnam` || 임시 파일을 만든다. |- |`ungetc` || 문자를 스트림의 역순으로 읽는다 |- |`puts` || `stdout`에 문자, 문자열을 출력한다. |}
# 멤버 상수
{| class="wikitable" |- ! 이름 !! 해설 |- |`EOF` || end-of-file 절을 가리키는 용도로 사용되는 `int`형의 음의 정수. |- |`BUFSIZ` || `setbuf()` 함수에 의해 버퍼 크기를 나타내는 정수. |- |`FILENAME_MAX` || 충분히 열 수 있는 저장 가능한 파일 이름의 `char`형의 배열 크기. |- |`FOPEN_MAX` || 동시에 열 수 있는 파일의 개수; 최소 8 |- |`_IOFBF` || "input/output fully buffered"의 약어. 이 정수값은 `setvbuf()` 함수에 넘겨서 버퍼화된 블록의 스트림을 열기 위해 입출력에 요구한다. |- |`_IOLBF` || "input/output line buffered"의 약어. 이 정수값은 `setvbuf()` 함수에 넘겨서 버퍼화된 라인의 스트림을 열기 위해 입출력에 요구한다. |- |`_IONBF` || "input/output not buffered"의 약어. 이 정수값은 `setvbuf()` 함수에 넘겨서 버퍼화 되지 않은 것을 스트림을 열기 위해 입출력에 요구한다. |- |`L_tmpnam` || `char` 배열이 `tmpnam()` 함수를 발생시킬 정도의 충분한 크기 |- |`NULL` || 널 포인터의 약어인 매크로 상수. 이 상수는 메모리의 어떤 유효한 위치의 개체도 가리키지 않는 포인터 값이다. |- |`SEEK_CUR` || `fseek()` 함수의 요구한 현재 파일 위치의 상대 위치를 나타내는 정수. |- |`SEEK_END` || `fseek()` 함수의 요구한 end of file의 상대 위치를 나타내는 정수. |- |`SEEK_SET` || `fseek()` 함수의 요구한 파일의 시작점의 상대 위치를 나타내는 정수. |- |`TMP_MAX` || `tmpnam()` 함수가 생성가능한 최대 파일명 길이 (최소 25자) |}
# 멤버 변수
{| class="wikitable" |- ! 이름 !! 해설 |- |`stdin` || 표준 입력 스트림(일반적으로 키보드)를 참조하는 `FILE`에 대한 포인터. |- |`stdout` || 표준 출력 스트림(일반적으로 디스플레이 터미널)을 참조하는 `FILE`에 대한 포인터. |- |`stderr` || 표준 오류 스트림(항상 디스플레이 터미널)을 참조하는 `FILE`에 대한 포인터. |}
# 멤버 형식
`stdio.h` 헤더에 정의된 데이터 형식이 포함되어 있다: * `FILE` \- 입출력 작동에 필요한 파일/텍스트 스트림에 대한 정보를 포함하는 구조다. ** 파일 서술자 ** 현재 스트림 위치. ** end-of-file 지시자 ** 오류 지시자 ** 적용 가능할 경우, 스트림의 버퍼에 대한 포인터. * `fpos_t` \- 유일하게 파일의 바이트 위치를 식별할 수 있는 비 배열 형식. * `size_t` \- `sizeof` 연산자의 결과값을 나타내는 형식의 양의 정수형.
# 참고
위키데이터 속성 추적 * 분류:C 표준 라이브러리 헤더