Standard C I/O 이함수들은 C++ stream-based IO classes 를지원한다. #include <cstdio> clearerr void clearerr( FILE *stream ); FILE 포인터객체 stream의 EOF 표시자와오류표시자를모두재설정 (Reset) 한다. void fopen FILE *fopen(const char *fname, const char *mode); fname : char 형포인터객체 mode : char 형포인터객체 fname 파일을열어서해당 stream을가리킨다. mode는권한을설정함. Mode 의미 파일이이미존재 파일이안존재 r 읽기전용으로파일을엶 포인터는시작위치 에러 w 쓰기전용 기존자료삭제 새로만듦 a 쓰기전용 포인터는마지막위치 새로만듦 r+ 읽기쓰기가능 포인터는시작위치 에러 w+ 읽기쓰기가능 기존자료삭제 새로만듦 a+ 읽기쓰기가능 포인터는마지막위치 새로만듦 b binary로읽는다 파일이성공적으로 open : FILE 객체에대한포인터를리턴 실패시 : NULL 포인터가리턴 fclose int fclose(file *stream); FILE 포인터객체 stream 객체의 FILE을닫는다. 해당스트림의모든버퍼는 flush. 성공 : 0 리턴 실패 : EOF 리턴 feof int feof(file *stream); FILE 포인터객체 stream 객체의파일끝표시자를검사하여 set되어있으면 0이아닌값을리턴. 표시자는이전 I/O작업에의해스트림이파일끝에도달하였을때설정. 성공 : non-0 value 실패 : 0 ferror int ferror(file *stream); FILE 포인터객체 stream객체에에러가있는지확인에러가있다 : non-zero value 에러가없다 : 0 1/24
fflush int fflush( FILE *stream ); FILE 포인터객체 stream이쓰기가능하고 (w,w+,a,a+) 마지막입출력작업이출력작업이였다면출력버퍼에쓰이지 않고남아있던데이터들은모두파일에쓰이게된다. 읽기가능하고마지막입출력작업이입력작업이였다면, 이함수가어떠한작업을할지라이브러리에따라 다르다. 몇몇의라이브러리에선입력버퍼를삭제하지만이는표준으로정해진것이아니다. 만일 stream 이널포인터라면모든열린스트림을지운다. 이함수호출이후에도 stream은열려있는상태로남아있다. 성공적작업 : 0 오류발생 : 오류표시자가설정, EOF fgetc int fgetc(file *stream); FILE 포인터객체 파일위치지정자가가리키는문자를리턴하고, 파일위치지정자는다음문자를가리킨다. (int) 읽어드린문자 파일의끝이나읽는도중에러발생시 : EOF fgets char *fgets(char *str, int num, FILE *stream); str : char 포인터객체 num : num-1개의문자열이나, 개행문자나 EOF에도달할때까지 stream에서읽어와서 str에저장 / 리턴한 다. 개행문자가이함수의 process 를끝나게하지만이개행문자도 str 에저장한다. NULL 문자는자 동적으로마지막으로입력받은문자뒤에붙는다. 화면입력을받고싶으면 FILE 포인터객체에 stdin 을해주면된다. 성공 : str 실패 : null 포인터 fprintf int fprintf(file *stream, const char * format,...); format : const char 포인터객체... : 형식태그에대응하는인자들 format에지정된형태의문자열을 stream에쓰게된다. 성공 : 출력된총문자의개수실패 : 음수 fputc int fputc(int ch, FILE *stream); ch : 주어진문자열을 stream에쓴다.( 문자열은 int형으로형변환된다 ) 성공 : ch를반환 실패 : EOF가리턴되고, 오류표시자가설정 2/24
fputs int fputs(const char * str, FILE *stream); str : const char 포인터객체 str문자열들을 stream에쓴다. 성공 : non-negative value 실패 : EOF fread size_t fread(void *buffer, size_t size, size_t num, FILE *stream); buffer : void 포인터객체 freopen size : size_t 객체 (typedef unsigned int size_t) num : size_t 객체 (typedef unsigned int size_t) stream에서 size크기 ( 단위는 Byte) 의 num개객체를읽어서 buffer에담는다. 반환된값이 num과같지않으면읽기오류. 성공 : num 실패 : EOF 시오류발생 FILE *freopen( const char *fname, const char *mode, FILE *stream ); fname : const char 포인터객체 mode : const char 포인터객체 stream을먼저 close 시키고, fname의파일을 mode로다시연다. 성공 : 다시열게된 stream을리턴실패 : NULL 포인터리턴 fscanf int fscanf( FILE *stream, const char *format,... ); format : const char 포인터객체... : 형식태그에대응하는인자들 stream에서지정된형식대로의자료를읽어온다. 읽어온자료는... 에저장된다. 성공 : 읽어들인데이터의수리턴실패 : EOF fseek int fseek( FILE *stream, long offset, int origin ); offset : long 형객체 origin : int형객체 stream 객체의위치지정자의위치를 origin 으로부터 offset 만큼떨어진곳으로바꾼다. 이때 origin 은 cstdio 에서정의된상수들을이용한다. SEEK_SET( 파일의시작 ), SEEK_CUR( 현재파일포인터의위치 ), SEEK_END( 파일의끝 ) 성공 : 0 실패 : non-zero value 3/24
fgetpos int fgetpos(file *stream, fpos_t *position); position : fpos_t 포인터객체 (typedef long long fpos_t) stream의위치지정자가가리키는위치를 position에저장한다 성공 : 0 실패 : non-zero value fsetpos int fsetpos( FILE *stream, const fpos_t *position ); position : const fpos_t 포인터객체 stream의위치지정자를 position으로바꾼다.( 단 position은 fgetpos를사용해서얻은값을 사용해야한다.) 성공 : 0 실패 : non-zero value, 전역변수 errono 를양수로설정.( 설정된값은 perror 함수를통해무 슨오류인지확인가능 ) ftell long ftell( FILE *stream ); FILE 포인터객체 stream 의위치지정자의현재위치를구한다. 성공 : 위치값리턴 실패 : -1 fwrite int fwrite( const void *buffer, size_t size, size_t count, FILE *stream ); buffer : const void 포인터객체 size : size_t 객체 (typedef unsigned int size_t) count : size_t 객체 (typedef unsigned int size_t) buffer 배열의각각의크기 size를가지는 buffer 배열의 count개의배열의원소수를 stream 에쓴다. 전체 stream 에써지는바이트수는 size*count 가된다. 써지는바이트수만큼위치지정자가증가한다. 성공 : count 리턴 실패 : count 와다른수리턴 getc int getc( FILE *stream ); FILE 포인터객체 stream에서다음문자열을리턴한다. 성공 : (int) 문자열리턴 실패 : 파일의끝이라면 EOF 리턴 getchar int getchar( void ); void stdin에서다음한문자를리턴한다. getc(stdin); 과동일한효과성공 : (int) 문자열리턴 실패 : 읽기오류발생시 EOF를리턴 4/24
gets char *gets( char *str ); char 포인터객체 stdin에서개행문자나파일끝을만나기전까지문자열을가져와서 str에저장한다. 개행문자는문자열에포함이되지않고널문자 ('\0') 는문자열맨마지막에자동추가. 성공 : str 리턴실패 : 오류발생시 str은변화가없고, NULL 포인터를리턴 perror void perror( const char *str ); char 포인터객체오류메시지를출력한다.(stderr( 보통 stderr은화면 )) printf 추가적으로전달하고하는내용이있으면 str 에담아서출력가능, 해당내용과오류내용은 : 으로구분 이함수는오류가발생하고바로출력되어야함.( 안그러면다른오류발생시에호출결과가달라질수있음 ) void int printf( const char *format,... ); format : char 포인터객체... : 형식태그에대응하는인자들 일련의데이터 (format) 을특수한형식에맞추어 stdout에출력. 성공 : 출력된전체문자의개수가리턴실패 : negative value putc int putc( int ch, FILE *stream ); ch : stream에 ch를쓴다. 문자를쓴뒤에는위치표시자를한칸전진시킨다. 성공 : ch 리턴 실패 : EOF 리턴. 오류표시자가설정 putchar int putchar( int ch ); stdout에 ch를쓴다. putc(ch, stdout) 과동일. 성공 : ch 리턴실패 : EOF 리턴. 오류표시자가설정 puts int puts( char *str ); char 포인터객체 stdout에 str의널종료문자에도달할때까지쓰고맨뒤에개행문자도추가로쓴다. fputs(str, stdout) 도동일한효과를낼수있으나개행문자는추가되지않는다. 성공 : non-negative value 실패 : EOF 리턴 remove int remove( const char *fname ); char 포인터객체 fname의파일이있으면삭제성공 : 0 실패 : non-zero 5/24
rename int rename( const char *oldfname, const char *newfname ); oldfname : char 포인터객체 newfname : char 포인터객체 oldfname의파일이있으면 newfname으로파일의이름을바꾼다. 성공 : 0 실패 : non-zero value rewind void rewind( FILE *stream ); FILE 포인터객체 stream의위치지정자를초기화한다. 또한오류지정자를초기화한다. void scanf int scanf( const char *format,... ); format : char 포인터객체... : 형식태그에대등하는인자들 stdin에서 format 형식에맞춰서인자에값을받는다. 성공 : 읽어드린값의개수 실패 : 다른값 or 읽기전오류발생 EOF setbuf void setbuf( FILE *stream, char *buffer ); buffer : char 포인터객체 stream의버퍼를설정한다. 특정스트림의입출력작업을위한버퍼설정. 이는보통 fully buffered 스트림으로설정. buffer가 NULL 이라면 stream은 unbuffered 스트림으로설정. void setvbuf int setvbuf( FILE *stream, char *buffer, int mode, size_t size ); buffer : char 포인터객체 mode : size : size_t 객체 (typedef unsigned int size_t) 버퍼를특정한스트림의입출력연산에사용될수있도록변경한다. 이함수는버퍼링방식과버퍼의크기를 설정할수있게지원. 버퍼의크기는 size 로정함. 만약 buffer 가 NULL 이라면시스템은동적으로함수에의해요청된크기 만큼메모리를할당하게되며이를스트림의버퍼로사용하게된다. mode 는버퍼링형식을정한다. _IOFBF(Full Buffering), _IOLBF(Line Buffering), _IONBF(No Buffering) 지정할버퍼크기. 크기는바이트이다. 성공 : 0 실패 : non-zero value 6/24
sprintf int sprintf( char *buffer, const char *format,... ); buffer : char 포인터객체 format : char 포인터객체... : 형식태그에대응하는인자들 format의형태에대응하는... 인자들을넣은문자열을 buffer에담는다. buffer의사이즈 > format의사이즈 + 1( 마지막 NULL 문자 ) 성공 : 쓰여진총문자의개수 (NULL문자는미포함 ) 실패 : negative value snprintf int snprintf( char *buffer, int buff_size, const char *format,... ); buffer : char 포인터객체 buff_size : format : char 포인터객체... : 형식태그에대응하는인자들 sprintf() 와비슷하지만 buffer의크기가주어지는게다르다. 이것은 buffer의오버플로를막는다. 성공 : 쓰여진총문자의개수 (NULL문자는미포함 ) sscanf int sscanf( const char *buffer, const char *format,... ); buffer : char 포인터객체 format : char 포인터객체... : 형식태그에대응하는인자들 buffer에서특정형식에대응하는값들을읽어온다. 성공 : 읽어드린값의개수를리턴실패 : 어떤데이터도성공적으로읽기전에입력이실패한다면 EOF 리턴 tmpfile FILE *tmpfile( void ); void 임시로유일한파일의이름을생성하여해당포인터를돌려준다. 성공 : FILE 포인터객체 실패 : NULL 리턴 tmpnam char *tmpnam( char *name ); char 포인터객체 유일한파일명을만들어서 name에쓴다. name 값 ungetc int ungetc( int ch, FILE *stream ); ch : stream에서방금전에읽어왔던값에대해서 ch로값을바꾸고위치지정자를한칸앞으로이동시킨다. 이때 ch는파일에쓰여지는것이아니라버퍼에쓰여지는것이므로파일을손대는것은아니다. 성공 : (int)ch 값 실패 : EOF 리턴. stream에는아무변화없음 7/24
Standard C String and Character double atof( const char *str ); char 포인터객체 str에서숫자 (double형) 를리턴한다. 단 str은숫자부터시작해야하고, E나 e 같은것을제외하고 는나머지비숫자류는파괴된다. double형숫자. 없으면 0 int atoi( const char *str ); char 포인터객체 str에서숫자 (int형) 를리턴한다. 단숫자부터시작해야하고 ( 스페이스바는괜찮다 ), 숫자가아닌문자 열이나오게되면읽기를중단한다. int형숫자 없으면 0 long atol( const char *str ); char 포인터객체 str에서숫자 (long형) 를리턴한다. long형숫자 없으면 0 int isalnum( int ch ); ch를판단해서특정숫자를돌려준다. 영어, 숫자 : non-zero value 영어, 숫자가아닌것들 : 0 int isalpha( int ch ); ch를판단해서특정숫자를돌려준다. 영어 : non-zero value 영어아닌것들 : 0 int iscntrl( int ch ); ch를판단해서특정숫자를돌려준다. Ctrl 문자열 : non-zero value Ctrl 문자열아닌것들 : 0 int isdigit( int ch ); ch를판단해서특정숫자를돌려준다. 0~9 사이의수 : non-zero value 그외 : 0 8/24
int isgraph( int ch ); ch를판단해서특정숫자를돌려준다. 화면에출력되는것 : non-zero value 그외 : 0 int islower( int ch ); ch를판단해서특정숫자를돌려준다. 영문소문자 : non-zero value 그외 : 0 int isprint( int ch ); ch를판단해서특정숫자를돌려준다. 스페이스바를포함한그려지는것들 : non-zero value 그외 : 0 int ispunct( int ch ); ch를판단해서특정숫자를돌려준다. 구획문자 : non-zero value 그외 : 0 int isspace( int ch ); ch를판단해서특정숫자를돌려준다. 공백문자 ( 스페이스, 탭,..) : non-zero value 그외 : 0 int isupper( int ch ); ch를판단해서특정숫자를돌려준다. 대문자 : non-zero-value 그외 : 0 int isxdigit( int ch ); ch를판단해서특정숫자를돌려준다. 16진수 : non-zero value 그외 : 0 9/24
void *memchr( const void *buffer, int ch, size_t count ); buffer : void 포인터객체 ch : count : size_t 객체 buffer안에문자열중 count만큼의개수동안 ch를찾아서해당위치를리턴한다. 성공 : 해당있는위치의포인터를리턴실패 : NULL int memcmp( const void *buffer1, const void *buffer2, size_t count ); buffer1 : void 포인터객체 buffer2 : void 포인터객체 count : size_t 객체 buffer1과 buffer2의처음 count크기를비교한다. 음수 : buffer1 < buffer2 0 : buffer1 == buffer2 양수 : buffer1 > buffer2 void *memcpy( void *to, const void *from, size_t count ); to : void 포인터객체 from : void 포인터객체 count : size_t 객체 from에있는문자열을 count 바이트만큼 to에쓴다. to 포인터리턴 void *memmove( void *to, const void *from, size_t count ); to : void 포인터객체 from : void 포인터객체 count : size_t 객체 memcpy처럼메모리영역을복사. 동일한영역내복사가능. to 포인터리턴 void* memset( void* buffer, int ch, size_t count ); buffer : void 포인터객체 ch : count : size_t 객체 buffer의 count 바이트에 ch를쓴다. buffer의포인터리턴 char *strcat( char *str1, const char *str2 ); str1 : char 포인터객체 str2 : char 포인터객체 str1 끝에 str2를붙여서 str1을리턴 str1 리턴 10/24
char *strchr( const char *str, int ch ); str : char 포인터객체 ch : str에서 ch가있으면해당포인터를리턴 발견된포인터. 없으면 NULL 리턴 int strcmp( const char *str1, const char *str2 ); str1 : char 포인터객체 str2 : char 포인터객체 str1과 str2를비교후값을리턴 0 : str1 == str2 음수 : str1 < str2 양수 : str1 > str2 int strcoll( const char *str1, const char *str2 ); str1 : char 포인터객체 str2 : char 포인터객체 strcmp와비슷하나, 특별히 setlocale 함수를사용해서비교한다. strcmp와동일한 output char *strcpy( char *dest, const char *src ); dest : char 포인터객체 src : char 포인터객체 src 문자열을 dest에 ( 종료 NULL 문자열까지 ) 복사한다. dest 포인터 size_t strcspn( const char *str1, const char *str2 ); str1 : char 포인터객체 str2 : char 포인터객체 str1에서 str2 문자열을만나기전까지의문자열의개수를리턴 문자열의개수를리턴 const char *strerror( int num ); num에 errno( 전역변수 ) 를넣으면, 무슨오류가났는지에대한에러메시지를반환한다. 오류에대한에러메시지리턴 size_t strlen( char *str ); char 포인터객체 str에서 NULL포인터를만나기전까지의문자열의개수 문자열의개수 11/24
char *strncat( char *str1, const char *str2, size_t count ); str1 : char 포인터객체 str2 : char 포인터객체 count : size_t 객체 str2에서처음부터 count 개의문자열을 str1 뒤에붙여쓴다. 그개수만큼 str1의메모리가할 당해두어야한다. 붙여넣은 str1 문자열의포인터를반환 int strncmp( const char *str1, const char *str2, size_t count ); str1 : char 포인터객체 str2 : char 포인터객체 count : size_t 객체 str1과 str2를 count개의문자열만큼만비교한후특정값을리턴음수 : str1 > str2 0 : str1 = str2 양수 : str1 < str2 char *strncpy( char *to, const char *from, size_t count ); to : char 포인터객체 from : char 포인터객체 count : size_t 객체 from 의 count개의문자열을 to의 char 포인터로복사한다. 만약 from의문자열의개수가 count개보다작다면, '\n' 을만나기전까지의문자열을복사한다. to의문자열리턴 char* strpbrk( const char* str1, const char* str2 ); str1 : char 포인터객체 str2 : char 포인터객체 str1에서 str2의문자열중같은문자열이발견된포인터를리턴발견된문자열의포인터를리턴 없다면 NULL 리턴 char *strrchr( const char *str, int ch ); str : char 포인터객체 ch : str의뒤쪽부터 ch의문자열이발견된포인터를리턴발견된문자열의포인터를리턴 없다면 NULL 리턴 size_t strspn( const char *str1, const char *str2 ); str1 : char 포인터객체 str2 : char 포인터객체 str1에서 str2에없는문자열이발견되면그때까지의길이를리턴 없는문자열이발견되면그때까지의길이를리턴 12/24
const char *strstr( const char *str1, const char *str2 ); char *strstr( char *str1, const char *str2 ); str1 : char 포인터객체 str2 : char 포인터객체 str1에서 str2 문자열이있는포인터를리턴문자열이있으면포인터를반환 없으면 NULL 포인터를반환 double strtod( const char *start, char **end ); start : char 포인터객체 end : char 포인터를가리키는포인터객체 start를해석할수있는곳까지해석해서 double형으로바꿔서돌려준다. end는해석가능한마지막문자에대한포인터값을가진다. 해당 double형 : 변환이성공 0 : 변환이실패 HUGE_VALF, HUGE_VALL : 오버플로 (errno에는 ERANGE 가설정 ) char *strtok( char *str1, const char *str2 ); str1 : char 포인터객체 str2 : char 포인터객체 str1에서 str2 문자열을기점까지토큰화한문자열을리턴잘린문자열을리턴. 토큰이없다면 NULL을리턴 long strtol( const char *start, char **end, int base ); start : char 포인터객체 end : char 포인터를가리키는포인터객체 base : start 문자열을해석가능한곳까지해석해서 long 형으로돌려준다. base는변환하려는진수를선택하고, 만약숫자문자가아닌문자를만나면그포인터의위치를 end에담게됨 변환된수리턴 unsigned long strtoul( const char *start, char **end, int base ); start : char 포인터객체 end : char 포인터를가리키는포인터객체 base : start 문자열을해석가능한곳까지해석해서 unsigned long 형으로돌려준다. base는변환하려는진수를선택하고, 만약숫자문자가아닌문자를만나면그포인터의위치를 end에담는다. 변환된수리턴 13/24
size_t strxfrm( char *str1, const char *str2, size_t num ); str1 : char 포인터객체 str2 : char 포인터객체 num : size_t 객체 str2에서 num 번째문자열까지 str1에복사한다. 처음부터복사된다. str2의문자열개수를리턴 int tolower( int ch ); ch를소문자로바꾼다. 바뀐문자열을 int형으로리턴 int toupper( int ch ); ch를대문자로바꾼다. 바뀐문자열을 int형으로리턴 14/24
Standard C Math int abs( int num ); num의절대값을구한다. num의절대값 double acos( double arg ); arg의 arc cosine 값을구한다. arg의 arc cosing 값 double asin( double arg ); arg의 arc sine 값을구한다. arg의 arc sine 값 double atan( double arg ); arg의 arc tangent 값을구한다. arg의 arc tangent 값 double atan2( double y, double x ); y : x : y/x의 arc tangent 값을구한다. y/x의 arc tangent 값 double ceil( double num ); num보다큰가장작은정수를구한다. num보다큰가장작은정수 double cos( double arg ); arg의 cosine 값을구한다. arg의 cosine 값 double cosh( double arg ); arg의 hyperbolic cosine 값을구한다. arg의 hyperbolic cosine 값 15/24
div_t div( int numerator, int denominator ); numerator : denominator : numerator/denominator의결과를 div_t 구조체로반환한다. div_t 구조체는 int quot ( 몫 ), int rem( 나머지 ) 로이루어진구조체이다. div_t 객체 double exp( double arg ); 자연수 (e) 의 arg승의값을구한다. 자연수 (e) 의 arg승의값 double fabs( double arg ); arg의절대값을구한다. arg의절대값 double floor( double arg ); arg보다작은수중에가장큰정수를구한다. arg보다작은수중에가장큰정수 double fmod( double x, double y ); x : y : x/y의나머지를구한다. x/y의나머지 double frexp( double num, int* exp ); num : exp : int 포인터객체 num의가수부의값을구하고지수부를 exp에담는다. num의가수부의값 long labs( long num ); long 객체 num의절대값을구한다.(long형) num의절대값 double ldexp( double num, int exp ); num : exp : exp 의값을구한다. exp 의값. 오버플로가발생되면 HUGE_VAL을리턴한다. 16/24
ldiv_t ldiv( long numerator, long denominator ); numerator : long 객체 denominator : long 객체 div 함수와같으나 long형으로리턴한다. ldiv_t를리턴한다. double log( double num ); 자연로그의 num의값을구한다. ln 값을리턴 double log10( double num ); log 값을구한다. log 값을리턴 double modf( double num, double *i ); num : i : double 포인터객체 num의정수부를 i 에담고, num의소수부를리턴한다. num의소수부를리턴 double pow( double base, double exp ); base : exp : exp 값을구한다. exp 값을리턴 double sin( double arg ); arg의 sine값을구한다. arg의 sine값 double sinh( double arg ); arg의 hyperbolic sine 값을구한다. arg의 hyperbolic sine값 double sqrt( double num ); num의제곱근을구한다. 의값을리턴 17/24
double tan( double arg ); arg의 tangent값을구한다. arg의 tangent값 double tanh( double arg ); arg의 hyperbolic tangent 값을구한다. arg의 hyperbolic tangent 값 18/24
Standard C Time & Date #include <ctime> char *asctime( const struct tm *ptr ); tm 포인터객체 ptr을문자열로바꿔서 (date month date hours:minutes:seconds year) 형태로리턴 문자열로 tm 구조체를리턴 #include <ctime> clock_t clock( void ); void 프로그램이시작된이후시간을구한다. 프로그램이시작된이후시간리턴 #include <ctime> char *ctime( const time_t *time ); time_t 포인터객체 time을문자열로바꿔서 (date month date hours:minutes:seconds year) 형태로리턴 문자열로 time_t 구조체를리턴 #include <ctime> double difftime( time_t time2, time_t time1 ); time2 : time_t 객체 time1 : time_t 객체 time2 - time1 의값을구한다. time2 - time1 #include <ctime> struct tm *gmtime( const time_t *time ); time_t 포인터객체 time에의해반환되는값의주소를전달받아분할된시간을나타내는 tm구조체의포인터를리턴. tm 구조체의포인터 #include <ctime> struct tm *localtime( const time_t *time ); time_t 포인터객체 time에의에반환된값의주소를받아분류된시간을포함하고있는 tm형의구조체의포인터를리턴 tm 구조체의포인터 #include <ctime> time_t mktime( struct tm *time ); tm 구조체포인터객체 tm 구조체를 time_t로바꿔준다. time_t 객체 19/24
#include <clocale> char *setlocale( int category, const char * locale ); category : locale : char 포인터객체로케일을세팅한다. Value (Category) LC_ALL LC_TIME LC_NUMERIC LC_COLLATE LC_CTYPE LC_MESSAGES Description All of the locale Date and time formatting Number formatting String collation and regular expression matching Regular expression matching, conversion, case-sensitive comparison, wide character functions, and character classification. For natural language messages locale 이 NULL이면현재로케일을리턴한다. 그외에는주어진 category의로케일을리턴한다. char 포인터객체 #include <ctime> size_t strftime( char *str, size_t maxsize, const char *fmt, struct tm *time ); str : char 포인터객체 maxsize : size_t 객체 fmt : char 포인터객체 time : tm 포인터객체 str에 maxsize 크기까지 fmt의형태로 tm구조체 time을바꿔서저장한다. 문자열의길이를리턴 #include <ctime> time_t time( time_t *time ); time_t 포인터객체 현재시간을리턴한다. 만약 time이주어졌다면 time에넣는다. 현재시간리턴 20/24
Standard C Memory void* calloc( size_t num, size_t size ); num : size_t 객체 size : size_t 객체 num객체의 size개배열의공간의포인터를리턴. 초기화된메모리는 0으로초기화된다. 배열공간의포인터리턴 NULL : 에러발생시 void free( void* ptr ); void 포인터객체 ptr 포인터의메모리를풀어준다. void void *malloc( size_t size ); size_t 객체 size 크기만큼메모리를할당한다. void void *realloc( void *ptr, size_t size ); ptr : void 포인터객체 size : size_t 객체 ptr의메모리크기를 size로바꿔서 ptr를리턴한다. 재할당된 size크기로잡힌포인터를리턴 21/24
Other standard C function void abort( void ); void 현재프로그램을종료한다. void #include <cassert> assert( exp ); 조건식조건식을판별해서 false 면에러메시지를 stdout에출력에러메시지를 stdout에출력 int atexit( void (*func)(void) ); function 포인터 프로그램종료직전에 func 함수를수행한다. 성공 : 0 실패 : non-zero value void *bsearch( const void *key, const void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) ); key : void 포인터객체 buf : void 포인터객체 num : size_t 객체 size : size_t 객체 compare : 비교하기위한함수포인터 (void 포인터객체두개 ) 찾으려는자료의포인터주소 key를 찾는대상이되는 size 크기의 num 개요소개수가있는테이블 buf 에서 comapre로비교로해서있으면해당포인터를반환없으면 NULL을반환찾아진 key값의포인터 NULL : 없으면 void exit( int exit_code ); exit_code에따라서프로그램을종료한다. void char *getenv( const char *name ); char 포인터객체 환경변수에등록된 name 이름이있는지확인하고있으면그에해당하는 value값을돌려준다. value : name환경변수에해당하는값 NULL : name이름의환경변수가없으면 22/24
#include <csetjmp> void longjmp( jmp_buf envbuf, int status ); envbuf : jmp_buf 객체 status : 마지막에 setjmp() 를불렀던코드의포인터로프로그램의코드실행이시작된다.envbuf는보통 setjmp() 를호출할때설정되며, status는 setjmp의리턴값이다. void int putenv( const char *envstring ); char 포인터객체 환경변수를생성, 수정, 삭제하기위한함수 성공 : 0 리턴실패 : -1 리턴 void qsort( void *buf, size_t num, size_t size, int (*compare)(const void*, const void *) ); buf : void 포인터객체 #include <csignal> num : size_t 객체 size : size_t 객체 compare : 비교하기위한함수포인터 (void 포인터객체두개 ) size 크기의 num 개수의원소를가진 buf 배열을 compare 함수의조건에의해 quick sort 하 여 buf에저장 void int raise( int signal ); 프로그램의특별한신호를보낸다. Signal SIGABRT SIGFPE SIGILL SIGINT SIGSEGV SIGTERM 성공 : 0 Meaning Termination error Floating pointer error Bad instruction 실패 : non-zero value User pressed CTRL-C Illegal memory access Terminate program int rand( void ); void 0부터 RAND_MAX까지의정수중임의의정수를리턴 임의의정수 ( ) #include <csetjmp> int setjmp( jmp_buf envbuf ); jum_buf 객체 시스템스텍을 envbuf에저장한다. setjmp를사용한횟수리턴 23/24
#include <csignal> void ( *signal( int signal, void (* func) (int)) ) (int); void srand( unsigned seed ); unsigned 객체 rand() 함수를사용하는데생성되는종류설정 void int system( const char *command ); char 포인터객체 주어진 command 에따라서특정행위를한다. command가사용가능한함수면 : non-zero value 가용 command가아니면 : 0 #include <cstdarg> type va_arg( va_list argptr, type ); void va_end( va_list argptr ); void va_start( va_list argptr, last_parm ); 24/24