라이브러리 함수(1ibrary function)란 c언어의 컴파일러를 만든 회사에서 많이 사용하는 기능을 함수로 만들어 제공하는 것을 말한다.
표준 라이브러리 함수를 사용하려면 사용하려는 함수의 헤더 화일을 #include문을 사용하여 프로그램의 서두에 삽입해야 한다.
12.1 수학적인 함수(math.h)
삼각함수, 제곱근, 절대값, 지수, 대수 등의 수학이나 공학에서 사용하는 수학적인 함수의 값을 구한다.
프로그램의 서두에 필요한 헤더 화일은 "math.h"이다.
12.1.1 절대값 처리 함수
[형식]
(1) int abs (var); <---- 단정도 정수형 절대값 int var; <---- 정수(상수, 변수, 수식)
(2) long labs(var); <---- 장정도 정수형 절대값 long var; <---- 정수(상수, 변수 수식)
(3) double fabs(var); <---- 실수형 데이터의 절대값 double var; <---- 실수(상수, 변수, 수식) |
|
[예제 12-1.C ]
#include <stdio.h> #include <math.h> main() { int x= -1995; long y= -12345678; double z= -1234.5678; printf("%d의 절대값 = %d\n", x, abs (x)); printf("%ld의 절대값 = %1d\n", y, labs (y)); printf("%f의 절대값 = %f\n", z, fabs (z)); }
|
12.1.2 제곱근 처리 함수

[형식]
double sqrt(var); double var; <---- 0보다 큰 실수 (상수, 변수, 수식) |
12.1.3 소수점 이하 반올림과 버림 처리 함수

소수점 이하에서 반올림 할 때 사용하는 함수는 ceil() 이고, 소수점 이하를 버릴 때 사용되는 함수는 floor()이다. [형식]
(1) double ceil(var); <---- 소수점 이하 반올림 double var; <---- 실수 (상수, 변수, 수식)
(2) double floor(var); <---- 소수점 이하 버림 double var; <---- 실수 (상수, 변수, 수식) |
|
[ 예제 12-2.C ]
#include <stdio.h> #include <math.h> main() { double x= 1234.567; printf("%f의 제곱근= %f\n", x, sqrt (x)); printf("%f의 소수 이하 반올림 = %f\n", x, ceil (x)); printf("%f의 소수 이하 버림 = %f\n", x, floor (x)); }
|
12.1.4 삼각 함수 처리 함수

삼각 함수의 값을 구할 때 사용되는 함수로 인수의 값은 모두 라디안(radian)값이여야 한다.
각도를 라디안으로 바꾸는 공식 라디안 = 각도 * 3.14159/180
[형식]
(1) double sin(var); <---- 사인 값 double var; <---- 각도(라디안) (2) double cos(var); <---- 코사인 값 double var; <---- 각도(라디안) (3) double tan(var); <---- 탄젠트 값 double var; <---- 각도(라디안) (3) double atan(var); <---- 아크 탄젠트 값 double var; <---- 각도(라디안) |
|
[ 예제 12-3.C ]
#include <stdio.h> #include <math.h> main() { double x,y= 60.0; x=y*3.14159/180; /* 각도 y를 라디안 x로 계산 */ printf("sin(%.0f) = %.4f\n", y, sin (x)); printf("cos(%.0f) = %.4f\n", y, cos (x)); printf("tan(%.0f) = %.4f\n", y, tan (x)); printf("atan(%.0f) = %.4f\n", y, atan(x)); }
|
12.1.5 거듭 제곱 처리 함수

거듭 제곱한 값을 구하는 함수는 pow( ) 이다.
x를 y로 거듭 제곱하면, xy = pow(x,y)
[형식]
double qow(x, y); <---- 거듭제곱 double x; <---- 실수 (상수, 변수, 수식) double y; <---- 실수 (상수, 변수, 수식) | |
12.1.6 로그 처리 함수

로그값을 구하는 함수는 log( )이다.
[형식]
double log(var); double var; <---- 0보다 큰 실수 (상수, 변수, 수식) |
|
[ 예제 12-4.c ]
# include <stdio.h> # include <math.h> main() { double x =10.3, y =4.7; printf("%f를 %f로 거듭 제곱하면 = %f\n", x, y, pow(x,y)); printf("%f의 로그값 = %.4f\n", x, log(x)); }
|
12.2.문자열 처리 함수(string.h)

문자열 (string)을 처리하는 데 필요한 함수이다.
프로그램 서두에 필요한 헤더 화일은 "string.h"이다.
12.2.1 문자열 복사 처리 함수

문자열을 복사할 때 사용하는 함수이다.
[형식]
(1) char *strcpy(str1, str2); char * str1; <---- 복사처 문자열 버퍼 char * str2; <---- 복사원 문자열 버퍼 (2) char * strncpy (str1, str2, n); char * str1; <---- 복사처 문자열 버퍼 char * str2; <---- 복사원 문자열 버퍼 int n; <---- 복사할 문자수 |
|
strcpy() 함수는 str2에 기억되어 있는 문자열 str1에 복사하며, str1에 있던 기존의 문자열은 지워진다.
strncpy() 함수는 str2에 기억되어 있는 문자열을 맨 앞에서 부터 n개의 문자를 str1에 복사하며, str1에 있던 기존의 문자열은 지워신다.
|
[ 예제 12-5.c ]
# include <stdio.h> # include <math.h> main() { char *s1 = "String Buffer"; char s2[30], s3[10]; strcpy(s2, s1); strcpy(s3, s1, 6); }
|
12.2.2 문자열 연결 처리 함수

한개의 문자열에 다른 문자열을 연결할 때 사용하는 함수이다.
[형식]
(1) char *strcpy(str1, str2); char * str1; <---- 연결처 문자열 버퍼 char * str2; <---- 연결원 문자열 버퍼 (2) char * strncpy (str1, str2, n); char * str1; <---- 연결처 문자열 버퍼 char * str2; <---- 연결원 문자열 버퍼 int n; <---- 연결할 문자수 |
strcat() 함수는 str2에 기억되어 있는 문자열을 str1dp 기억되어 있는 문자열과 연결하여 str1에 기억한다.
strncat() 함수는 str2에 기억되어 있는 문자열의 맨 앞에서부터 n개의 문자를 str1에 기억되어 있는 문자열과 연결하여 str1에 기억한다.
|
[ 예제 12-6.c ]
# include <stdio.h> # include <math.h> main() { char *s1 = "String Buffer"; char s2[30], s3[30]; strcpy(s2, s1); strcpy(s3, s1); strcat(s2, s1); strncat(s3, s1, 6); printf("%s\n", s2); printf("%s\n", s3); }
|
12.2.3 문자열 비교 처리 함수

문자열과 문자열을 비교할 때 사용하는 함수이다.
[형식]
(1) int*strcmp(str1, str2); char * str1; <---- 비교 대상 문자열 버퍼 (2) int* strncmp (str1, str2, n); char * str1, str2; <---- 비교 대상 문자열 버퍼 int n; <---- 비교 대상 문자수 |
strcmp() 함수는 str1과 str2에 들어있는 문자열을 앞에서부터 한 문자씩 차례대로 비교하여 str1 > str2 이면 양수, str1 = str2 이면 0, str1 = str2 이면 음수값을 함수값으로 반환한다.
strncmp() 함수는 str1과 str2가 기억하고 있는 문자열을 처음부터 n개의 문자까지 비교한다.
|
[ 예제 12-7.c ]
# include <stdio.h> # include <string.h> main() { char * s1 = "I love you."; char * s2 = "I like you.";
if(strcmp(s1, s2) > 0) printf("%s\n", s1); eles if(strcmp(s1,s2) == 0) { printf("%s\n", s1); printf("%s\n", s2); } else printf("%s\n", s2);
fi(strncmp(s1, s2, 3) > 0) printf("%s", s1); else if(strncmp(s1, s2, 3) == 0) { printf("%s\n", s1); prntf("%s\n", s2); else printf("%s\n", s2); }
|
12.2.4 문자열 길이 처리 함수

문자열의 길이를 구할 때 사용되는 함수이다.
[형식]
int*strlen(str); char * str; <---- 문자열 버퍼
|
문자열의 길이가 함수값으로 리턴된다.
|
[ 예제 2-5.C ]
# include <stdio.h> # include <string.h> main() { char * s1 = "String Length"; int len; len len; len = strlen(str); printf("str 버퍼에 들어있는 문자열의 길이 : %d\n", len); }
|
12.3 문자 처리 함수

1문자 단위로 검사 또는 변환하는 함수를 말한다.
프로그램의 서두에 필요한 헤더 파일은 "ctype.h"이다.
문자 처리 함수는 매크로로 구현되어 있으며 인수, 리턴값, 함수의 기능은 아래의 표와 같다.
|
|
|
|
|
|
구 분 |
함 수 명 |
기 능 |
|
문자검사 |
isalnum (c) |
영, 숫자이면 참값을 갖는다. |
|
isalpha (c) |
영문자이면 참값을 갖는다. |
iscntrl (c) |
제어문자이면 참값을 갖는다. |
isdigit (c) |
숫자이면 참값을 갖는다. |
isgraph (c) |
인쇄 가능 문자이면 참값을 갖는다. |
islower (c) |
소문자이면 참값을 갖는다. |
isprint (c) |
공백 이외의 인쇄 가능 문자이면 참값을 갖는다. |
ispunct (c) |
문자가 구두점이면 참값을 갖는다. |
isspace (c) |
공백 계열의 문자이면 참이다. |
inupper (c) |
대문자이면 참이다. |
isxdigit (c) |
16진수 표시 문자이면 참이다. |
|
문자변환 |
toascii (c) |
최상위 비트를 제거하여 ASCII로 변환한다. |
|
tolower (c) |
문자 c를 소문자로 변환한다. |
toupper (c) |
문자 c를 대문자로 변환한다. |
tocower (c) |
문자 c를 무조건 소문자로 변환한다. |
towpper (c) |
문자 c를 무조건 대문자로 변환한다. | |
|
[ 예제 12-9.c ]
#include <stdio.h> #include <ctype.h> main() { int c;
printf("< isalpanum >\n"); for(c=0; c<=127; ++c) if(isalnum (c)) printf("%c", c);
printf("\n< isalpha >\n"); for(c=0; c<=127; ++c) if(isalpha (c)) printf ("%c, c);
printf("\n< isdigit >\n"); for(c=0; c<=127; ++c) if(isdigit (c)) printf ("%c, c);
printf("\n< isxdigit >\n"); for(c=0; c<=127; ++c) if(isxdigit (c)) printf ("%c, c);
|
12.4 메모리 관리 함수

메모리를 동적으로 할당하거나 할당된 메모리를 해제하는 함수이다.
프로그램 서두에 필요한 헤더 파일은 "alloc.h" 또는 "malloc.h" 이다.
메모리의 영역은 개념적으로 아래 그림과 같다.
[형식]
(1) void *malloc (size) ; <---- 기억 장소 영역 확보 size_t size; <---- 부호없는 정수형 (2) void *calloc(size); <---- 0으로 초기화된 기억 장소 확보 size_t size; <---- 부호없는 정수형 (3) void free(p); <---- 기억 장소 영역 해제 void *p; |
|
[ 보기 ]
#include <stdio.h> main() { char pt; pt = (char*) malloc (10000); ............. free(pt);
|
12.5 데이터 변환 처리 함수

문자열 수치 데이터를 변환하여 숫자형 수치로 변환하는 함수를 말한다.
프로그램 서두에 필요한 헤더 파일은 "stdlid.h"이다.
[형식]
(1) int atoi(str); <-- 문자열 str을 int형으로 변환 char * str; (2) long atol(str); <-- 문자열 str을 long형으로 변환 char * str; (3) dougle atof(str); <-- 문자열 str을 부동 소숫점 수로 변환 char * str; (4) double strtod(str); <-- 문자열 str을 double형으로 변환 char * str; (5) long strtol(str); <-- 문자열 str을 long형으로 변환 char * str; (6) unsigned int strtoul; <-- 문자열 str을 unsigned형으로 변환 char * str; |
|
[ 예제 12-10.C ]
# include <stdlib.h> # include <strio.h> # include <string.h> main() { int i; long l; dougle d; char str[30];
strcpy(str, "1234"); i = atoi(str);
strcpy(str, "123456789"); l = atol(str);
strcpy(str, "123.456"); d = atof(str);
printf("int 형 변환 = %d\n", I); printf("long 형 변환 = %ld\n", l); printf("double 형 변환 = %f\n", d); }
|
12.6 난수 발생 처리 함수

난수를 발생시키는 함수이다.
헤더 파일은 "stdlib.h"가 필요하다.
[형식]
|
[ 예제 12-10.C ]
# include <stdio.h> # include <strdio.h> main() { int i, r; printf("0부터 9까지의 난수 구하기\n"); for(I=0; I<=5; ++i) { r=rand()%10; printf("%d", r); } }
|
동주대학 전산과 홍수열 copyright(c) 1998. sooyoul Hong All Right Reserve |