strchr
- C kursu
- Başlangıç
- Ders 88/116
- 5 dk
strchr ile dizede karakter aramayı öğrenirsin.
strchr: karakter arama
strchr fonksiyonu bir dizede belirli bir karakterin ilk geçtiği konumu bulur. <string.h> başlık dosyasıyla gelir. İmzası char *strchr(const char *s, int c) biçimindedir.
char *p = strchr("merhaba", 'a');
// p, ilk 'a' harfini gösterirBulamazsa NULL döndürür. Dönen değer bir işaretçi olduğu için, dizedeki indeksi hesaplamak için p - s çıkarması yaparsın. Bu, karakterin baştan kaçıncı konumda olduğunu verir.
İşaretçi ile indeks hesaplama
strchr bir işaretçi döndürür; indeksi değil. Dizedeki indeksi bulmak için dizenin başlangıcından çıkarma yaparsın.
char text[] = "merhaba";
char *p = strchr(text, 'a');
long index = p - text;
// index = 4Burada p ilk 'a' harfının adresini tutar; text ise dizinin başlangıcıdır. İki işaretçi farkı, aralarındaki eleman sayısını verir. Böylece karakterin kaçıncı konumda olduğunu öğrenirsin. p'yi NULL mı diye kontrol etmeyi unutma.
Uygulama İlk 'a' harfının indeksini yazdır
strchr ile "merhaba dunya" dizesindeki ilk 'a' harfının konumunu bul ve printf ile indeksi yazdır. strchr kullanmak için <string.h> başlığını eklemelisin.
Başlangıç kodu
#include <stdio.h>
int main(void) {
char text[] = "merhaba dunya";
/* strchr ile ilk 'a' konumunu bul ve yazdır */
return 0;
}Örnek çözüm
#include <string.h>
char *p = strchr(text, 'a');
if (p != NULL) {
printf("%ld\n", (long)(p - text));
}Beklenen çıktı
4
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 strchr karakteri bulamazsa ne döndürür?
- NULL Doğru cevap
- Boş bir dize
- 0
- -1
Açıklama: strchr bulamazsa NULL döndürür; bu, geçersiz işaretçi demektir.
2 Boşluğu doldur: strchr çağrısı
char *p = ____(text, 'a');
char *p = strchr(text, 'a');
Açıklama: strchr bir karakter arar.
3 Çağrı ve davranış eşleştir
| Kavram | Anlamı |
|---|---|
strchr(s, c) |
İlk c konumu |
p - s |
İndeks değeri |
NULL |
Bulunamadı |
char * |
İşaretçi türü |