GirişBu kısımda C Programlama Dili'nde sıkça kullanılan kütüphane fonksiyonlarının bazıları liste halinde sunulmuştur. Kütüphane fonksiyonu C dilinde önceden tanımlanmış hazır fonksiyonlarıdır. C dilinde birçok iş bu fonksiyonlarla yapılabilmektedir. Aslında her iş için bir fonksiyon bulmak olası. Bütün kütüphane fonksiyonlarının tamamı buradakilerden çok daha fazladır.
NOT
Her kütüphane fonksiyonu bir başlık dosyasında tanımlanmıştır. Bu yüzden bir kütüphane fonksiyonunu kullanmadan önce, onun hangi başlık dosyası ile kullanılması gerektiğini bilmelisiniz.
Matematiksel Fonksiyonlar (math.h)Matematiksel fonksiyonların tipleri double dır. Bu fonksiyonlardan biri program içinde kullanılacaksa math.h başlık dosyası program içine eklenmelidir. En çok kullanılan matematiksel fonksiyonlar Tablo 5.1'de listelenmiştir.
Tablo 5.1: math.h kütüphanesinde tanımlı bazı fonksiyonlar Fonksiyon BildirimiAçıklamaÖrnekSonuçint abs(int x);
x tamsayısının mutlak değerini hesaplar
abs(-4)
4
double fabs(double x);
x gerçel sayısının mutlak değerini hesaplar
fabs(-4.0)
4.000000
double floor(double x);
x'e (x'den büyük) en yakın tamsayıyı gönderir
abs(-2.7)
3.000000
double ceil(double x);
x'e (x'den küçük) en yakın tamsayıyı gönderir
abs(5.6)
5.000000
double sqrt(double x);
pozitif x sayısının karekökünü hesaplar
sqrt(4.0)
2.000000
double pow(double x, double y);
x^y (xy) değerini hesaplar
pow(2.0,3.0)
8.000000
double log(double x);
pozitif x sayısının doğal logaritmasını hesaplar, ln(x)
log(4.0)
1.386294
double log10(double x);
pozitif x sayısının 10 tabanındaki logaritmasını hesaplar
log10(4.0)
0.602060
double sin(double x);
radyan cinsinden girilien x sayısının sinüs değerini hesaplar
sin(3.14)
0.001593
double cos(double x);
radyan cinsinden girilien x sayısının kosinüs değerini hesaplar
cos(3.14)
-0.999999
double tan(double x);
radyan cinsinden girilien x sayısının tanjant değerini hesaplar
tan(3.14)
-0.001593
double asin(double x);
sinüs değeri x olan açıyı gönderir. Açı -pi/2 ile pi/2 arasındadır.
asin(0.5)
0.523599
double acos(double x);
cosinüs değeri x olan açıyı gönderir. Açı -pi/2 ile pi/2 arasındadır.
acos(0.5)
1.047198
double atan(double x);
tanjant değeri x olan açıyı gönderir. Açı -pi/2 ile pi/2 arasındadır.
atan(0.5)
0.463648
NOT
Bir programda math.h kütüphanesi kullanılacakca, GCC derleyicisi -lm seçeneği ile birlikte kullanılmalıdır.
Örneğin test.c içinde math.h'i kullanıyorsa derleme:
gcc -lm test.c -o test şeklinde yapılmalıdır. Aksi halde bir hata mesajı ile karşılaşılır.
Trigonometrik (sin, cos, tan) fonksiyonlar kendisine parametre olarak gelen değeri radyan olarak kabul eder ve sonucu hesaplar. Eğer açılar derece cinsinden hesaplanması gerekiyorsa şu dönüşüm kullanılmalıdır: radyan = (3.141593/180.0)*derece;
Program 5.1: sin(), cos(), and tan() fonksiyonlarının kullanımı
[color=gray] 1: /* 05prg01.c: 30 dercelik bir açının sinüs, kosinüs ve tanjant değerleri */ 2: 3: #include <stdio>
4: #include <math>
5: 6: #define PI 3.141593
7: #define CARPAN PI/180.0
8: 9: void main()
10: {
11: double x;
12: 13: x = 30.0;
/* 30 derece ! */14: x *= CARPAN;
/* radyana çevir */15: 16: printf("30 derecenin sinusu : %f\n", sin(x));
17: printf("30 derecenin kosinusu : %f\n", cos(x));
18: printf("30 derecenin tanjanti : %f\n", tan(x));
[color:9f87=gray:9f87]19: }
DERLEME ve ÇALIŞTIRMA Turbo C (MS DOS)
GCC (Linux)
C:\TC> tcc 05prg01.c
C:\TC> 05prg01
$ gcc -lm 06prg01.c -o 05prg01
$ ./05prg01
ÇIKTI
30 derecenin sinusu : 0.500000
30 derecenin kosinusu : 0.866025
30 derecenin tanjanti : 0.577350
Standart Fonksiyonlar (stdlib.h)Tablo 5.2: stdlib.h kütüphanesinde tanımlı bazı fonksiyonlar Fonksiyon BildirimiAçıklamaÖrnekSonuçint atoi(const char *s);
Bir katarı tamsayıya çevirir
atof("-12345")
-12345
long atol(const char *s);
Bir katarı uzun tamsayıya çevirir
atof("1234567890")
1234567890
double atof(const char *s);
Bir katarı reel sayıya çevirir
atof("-123.546")
-123.456
void exit(int
durum);
Programı sonlandırarak kontrolü işletim sistemine geri verir.
exit(0)
-
int rand(void);
0 ile RAND_MAX arasında rastgele sayı üretir.
RAND_MAX, stdlib.h içinde tanımlanmış bir sembolik sabittir
rand()
504851
max(a,b)
stdlib.h'de tanımlanmış iki sayıdan en büyüğünü bulan makro fonksiyon
max(5,9)
9
min(a,b)
stdlib.h'de tanımlanmış iki sayıdan en küçüğünü bulan makro fonksiyon
min(5,9)
5
void *malloc(unsigned
boyut);
Bellekte
boyut ile belirtilen sayıda bayt kadar yer tahsis eder
p=malloc(sizeof(int)*5)
?
void free(void *
ptr);
malloc ile ayrılan bellek bölgesini boşaltır
free(p)
-
Program 5.2: rand() fonksiyonuun kullanımı
[color=gray] 1: /* 05prg02.c:
[color=gray] 2: (a) 0-100 arasında 10 tane rasgele sayı üretir
[color:9f87=gray:9f87] 3: (b) 0-1 arasında 10 tane rasgele sayı üretir */
4: 5: #include <stdio>
6: #include <stdlib>
7: 8: void main()
9: {
10: int i,ri;
11: float rf;
12: 13: /* randomize(); Turbo C için */14: 15: for(i=0;i<10> tcc 05prg02.c
C:\TC> 05prg02
$ gcc 05prg02.c -o 05prg02
$ ./05prg02
ÇIKTI
57 0.928434
10 0.204596
36 0.638691
18 0.682974
90 0.790521
73 0.090518
16 0.118015
46 0.250557
4 0.593158
36 0.437132
20 tane rasgele sayı ürettim...
Karakter Üzerinde İşlem Yapan Fonksiyonlar (ctype.h)Tablo 5.3: ctype.h Kütüphanesinde tanımlı fonksiyonlar Fonksiyon BildirimiAçıklamaÖrnekSonuçisalpha(c)
c bir harf ise 0 dan farklı, değilse 0 gönderir
isalpha('a')
8
isalnum(c)
c A-Z, a-z veya 0-9 arasında ise 0 dan farklı, değilse 0 gönderir
isalnum('a')
1
isascii(c)
c bir ASCII karakter ise 0 dan farklı, değilse 0 gönderir
isascii('a')
1
isdigit(c)
c bir rakam ise 0 dan farklı, değilse 0 gönderir
isdigit('4')
2
islower(c)
c a-z arasında ise 0 dan farklı, değilse 0 gönderir
islower('P')
0
isupper(c)
c A-Z arasında ise 0 dan farklı, değilse 0 gönderir
islower('P')
4
toascii(c)
c sayısı ile verilen ASCII koda sahip karakteri elde eden makro
toascii(65)
A
tolower(c)
c karakterini küçük harfe çevirir
tolower('D')
d
toupper(c)
c karakterini büyük harfe çevirir
toupper('b')
B
Program 5.3: ctype.h kütüphansinde bulunan bazı makroların kullanımı
[color=gray] 1: /* 05prg03.c:
[color=gray] 2: ASCII kodaları 32-127 arasında olan karakterler üzerinde
[color:9f87=gray:9f87] 3: ctype.h kütüphanesinde tanımlı bazı makroların kullanımı */
4: 5: #include <stdio>
6: #include <ctype>
7: 8: void main(void)
9: {
10: int i;
11: char c;
12: 13: for(i=32;i<127> tcc 05prg02.c
C:\TC> 05prg02
$ gcc 05prg02.c -o 05prg02
$ ./05prg02
ÇIKTI
32 0 0
33 ! ! 0 0
34 " " 0 0
35 # # 0 0
36 $ $ 0 0
37 % % 0 0
...
47 / / 0 0
48 0 0 0 2
49 1 1 0 2
50 2 2 0 2
...
65 A a 4 0
66 B b 4 0
...
97 a a 8 0
98 b b 8 0
...
122 z z 8 0
123 { { 0 0
124 | | 0 0
125 } } 0 0
126 ~ ~ 0 0