C
stdlib.h
stdlib.h içindeki malloc, exit, atoi gibi fonksiyonları öğrenirsin.
stdlib.h
<stdlib.h> başlığı, C'nin en çok kullanılan genel amaçlı işlevlerini içerir: bellek ayırma (malloc), programdan çıkış (exit), dizgi–sayı dönüşümü (atoi) ve hızlı sıralama (qsort).
malloc'u önceki gruplarda gördün; şimdi diğer üçüne bakalım. exit(1) programı hemen sonlandırır; hata durumunda kullanılır. atoi("42") bir dizgiyi tamsayıya çevirir ve 42 döndürür; dönüştürülemeyen karakterlerde 0 verir. qsort bir diziyi sıralar; bir karşılaştırma işlevi ister. Bu işlevler C programlarının temel yapı taşlarıdır; neredeyse her gerçek projede kullanılırlar.
qsort kullanımı
qsort genel amaçlı bir sıralama işlevidir. Herhangi bir türdeki diziyi sıralayabilir; bunun için bir karşılaştırma işlevi ister.
İmza: void qsort(void *base, size_t count, size_t size, int (*cmp)(const void *, const void *)). base dizinin başlangıcı, count eleman sayısı, size her elemanın bayt büyüklüğü, cmp ise karşılaştırma işlevidir. Karşılaştırma işlevi iki const void * alır ve negatif, sıfır ya da pozitif döndürür. Örnek: int cmp(const void *a, const void *b) { return *(int*)a - *(int*)b; }. Bu, iki tamsayıyı küçükten büyüğe sıralar. Çağrı: qsort(arr, 3, sizeof(int), cmp);. Artık arr sıralıdır.
Uygulama atoi ve qsort
int cmp(const void *a, const void *b) yaz: return *(int*)a - *(int*)b;. main'de const char *s = "42";, int n = atoi(s);, int arr[] = {3, 1, 2};, qsort(arr, 3, sizeof(int), cmp);, printf("%d %d %d %d\n", n, arr[0], arr[1], arr[2]);.
Örnek çözümü göster
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
int main(void) {
const char *s = "42";
int n = atoi(s);
int arr[] = {3, 1, 2};
qsort(arr, 3, sizeof(int), cmp);
printf("%d %d %d %d\n", n, arr[0], arr[1], arr[2]);
return 0;
}
Kendini test et
-
atoi("42") çağrısı ne döndürür?
- 0 (hata)
- "42" (dizgi)
- 42 (tamsayı)
- 42.0 (ondalık)
Cevabı göster
42 (tamsayı) — atoi bir dizgiyi tamsayıya çevirir; "42" → 42.
-
stdlib işlevleri
- malloc
- bellek ayır
- exit
- programdan çık
- atoi
- dizgiyi sayı yap
- qsort
- diziyi sırala
-
qsort çağrısı
qsort(arr, 3, sizeof(int), ____);
Cevabı göster
qsort(arr, 3, sizeof(int), cmp);
Sıradaki ders: string.h