C Dilinde Fonksiyona Gönderilen Pointer' la e-mail Adres Kontrolü

Merhabalar, bu gün yine C dilinde bir örnek kod yazmayı düşünüyorum. Bu kod girilen metnin e-mail adresi olup olmadığını basitçe kontrol eden bir kod. Biraz açmak gerekirse, bu programda bir ‘pointer’ la dizinin adres içeriklerini teker teker kontrol edip, ‘@’ simgesinin olup olmadığına bakacağız. Varsa “gecerli e-mail”, yoksa “gecersiz e-mail” çıktılarını göreceksiniz. Programı sizlere sunmadan önce ‘pointer’lara kısaca değinmek istiyorum.

Pointer nedir?
Pointer‘ ın Türkçe karşılığı işaretçidir. “int *ptr;” şeklinde tanımlanır. Bellekte, değişkenler için ayrılan adres bilgilerini tutar. Aşağıdaki örneği incelediğinizde daha iyi anlayacağınızı düşünüyorum.

#include
int kontrol(int *, char [10][50]);
void main()
{
int i=0;
int *ptr;
char adres[10][50];
for(i;i<=9;i++)
{
printf(“%d. e-posta adresini giriniz:   “,i+1);
scanf(“%s”, adres[i]);
ptr=&i;
kontrol(ptr,adres);
}
}
int kontrol(int *ptr, char adres[10][50])
{
int i=0;
for(i;adres[*ptr][i]!=‘\0’;i++)
{
if(adres[*ptr][i]==‘@’)
{
printf(“gecerli e-mail\n\n\n”);
return 1;
}
}
if(adres[*ptr][i]==‘\0’)
printf(“gecersiz e-mail\n\n\n”);
}
Programı açıklamak gerekirse, 2. satırda int tipinde geri dönüş değerine sahip, parametre olarak bir pointer ve bir iki boyutlu dizi alan fonksiyonun prototipini tanımladık. 12. satırda ptr ‘pointer’ ına dizinin adres bilgilerini atadım ve hemen altında char dizisiyle birlikte ‘pointer’ ı ‘kontrol’ dizisine gönderdim. Şimdi fonksiyonda neler oluyor buna bakalım. Fonksiyondaki for döngüsü ile gönderdiğimiz dizi elemanlarını teker teker tarıyorum. – adres[*ptr][i]!=’\0′ – ifadesi, dizideki elemanları boşluk görene kadar tara  anlamına geliyor.
İf yapısı içindeki ifadeyle, dizi elemanlarından biri eğer ‘@’ e eşitse ifade geçerli bir e-mail adresidir. Eğer  arama sonucunda ‘@’ bulunamazsa, ifade uygun değildir.

Basit bir e-mail adres kontrolü programı yaptım, umarım faydalı olur, siz de uğraşıp daha gelişmişini yapabilmeniz dileğiyle hoşça kalın…

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir