Dize dönüştürme
- C kursu
- Orta seviye
- Ders 21/116
- 5 dk
atoi, atof ve strtol ile dönüştürme öğrenirsin.
atoi ile tamsayıya çevirme
atoi(s), bir dizeyi int'e çevirir. Adı "ASCII to integer" anlamına gelir. <stdlib.h> başlık dosyasında bildirilmiştir.
Örnek: int n = atoi("42");. Burada n, 42 olur. atoi başındaki boşlukları atlar ve sayıya çevirir; geçersiz girişte davranışı tanımsızdır, genelde 0 döner. Güvenli çevrim için strtol tercih edilir; hata durumunu ayrı bir parametre ile raporlar. atof ise double için benzer çalışır.
strtol ile güvenli çevrim
strtol(s, &end, 10), bir dizeyi uzun tamsayıya çevirir; ikinci parametre çevrimin nerede durduğunu, üçüncü ise tabanı (10 onluk) belirtir.
Örnek: char *end; long v = strtol("42abc", &end, 10);. Burada v, 42 olur; end, "abc" kısmını işaret eder. Bu sayede hem değer hem de kalan kısmı öğrenirsin. atoi'dan farklı olarak strtol hata durumunu açıkça raporlar; bu yüzden üretim kodunda tercih edilir. atof ise double çevrimi için benzer şekilde çalışır.
Uygulama Dizeyi int ve double'a çevir
int n = atoi("42"); ile tamsayıya çevir. double d = atof("3.14"); ile ondalığa çevir. printf("%d\n", n); ve printf("%f\n", d); ile yazdır. <stdlib.h> başlık dosyasını ekle.
Başlangıç kodu
#include <stdio.h>
#include <stdlib.h>
// atoi ile "42" dizesini int'e çevir
// atof ile "3.14" dizesini double'a çevir
// her ikisini de yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int n = atoi("42");
double d = atof("3.14");
printf("%d\n", n);
printf("%f\n", d);
return 0;
}Beklenen çıktı
42 3.140000
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 "42" dizesini int'e çeviren fonksiyon hangisi?
- strcat
- strlen
- atoi Doğru cevap
- strstr
Açıklama: atoi, dizeyi int'e çevirir; adı ASCII to integer anlamına gelir.
2 Dönüştürme fonksiyonlarını eşle
| Kavram | Anlamı |
|---|---|
atoi |
int çevirir |
atof |
double çevirir |
strtol |
long ve kalan verir |
sprintf |
Biçimli yaz |
3 atof çağrısını tamamla
double pi = ____("3.14");
double pi = atof("3.14");
Açıklama: atof, dizeyi double'a çevirir.