Skip to main content

C Programlama : Bir Stringi Tersten Yazdırmak

C diğer bazı dillerden farklı olarak Stringler için ayrı bir veri türü içermez. Stringler C ‘de karakter dizileri olarak tanınırlar. Yani bir karakter dizisi bir stringtir diyebiliriz. Daha da derinlere inersek C ‘de aslında dizilerin  Pointer gibi kullanabildiğini söyleyebiliriz. Bu tip durumlarda göstereciler string dizisinin ilk  elemanını [0.Eleman] gösterirler.  Bu durumdan dolayı klavyeden bir değer okurken normalde değişkeninin önüne koyduğumuz & karakterini stringlerde kullanmaya gerek yoktur.

Örneğin  klavyeden bir sayı okurken   şu şekilde bir yapı kullanıyorduk.

printf("Bir Sayi Giriniz : =");
scanf("%d",&sayi);

Yukarıda ki örnekte bir   tam sayı okuduk . Örneğin şimdi klavyeden bir string dizisi okuyacağımızı varsayalım . Yapacağımız işlem şu şekilde olacaktır.

 

#include 
#include 
#include 
int main()
{
char stringim[255];
printf("Bir String Girin : ");
scanf("%s",stringim);
printf("\nGirilen String: %s",stringim);
system("pause");
}

Yukarıda dikkat edilmesi gereken nokta scanf  fonksiyonu ile okuma yapılırken & karakterinin kullanılmamış olmasıdır.  Bunun böyle olmasının sebebi aslında karakter dizilerinin bir gösterici olmasından kaynaklanmakta. Göstericiler zaten bir adresi temsil ettiklerinden    adres operatörü olan &    bir daha kullanılmamıştır.

Bir karakter dizisini scanf() ile okuyabileceğimiz gibi C kütüphanelerinde bu işi yapan başka fonksiyonlarda vardır.   gets()  fonksiyonu string okumak için sıkça kullanılan fonksiyonlardan biridir. Ama bu fonksiyonu kullanırken dikkat edilmesi gereken bir şey vardır. Örneğin biz string dizimizin boyununu 255 karakter olarak belirlersek kullanıcı  300 karakterlik bir  string girişi yapsa bile bunu kontrol edemeyiz ve doğal olarak veri kaybı meydana gelir.

Bu bilgileri verdikten  sonra bir stringi  tersten  yazdırmak için gerekli olan kodları paylaşmak istiyorum.

Bir stringi tersten yazdırmak için önce string dizisini klavyeden okumamız gerekir. Daha sonra okuduğumuz string dizisini bir döngü içersinde son karakterden başlayarak ilk karaktere gelinceye kadar okursak  string ekrana ters olarak mesaj edilir.   Burada karsımıza çıkan sorun  String dizisinin son karakterini nasıl belirleyeceğimizdir.  Bunun içinde yine C kütüphaneleri içersinde olan strlen() fonksiyonunu kullanacağız. Strlen bir stringin  uzunluğunu verir. Örneğin  string dizisi olarak olarak AYTAÇ girilierse fonksiyonun döndüreceği değer 5 olacaktır. Fakat   Dizilerde ilk karakterin 0. Karakter olduğunu gözden kaçırmamız gerekmektedir. Bundan dolayı  AYTAÇ stringinde 5. karakter olan Ç  karakteri C yapısı 0  ‘dan başladığından 4 nolu indise sahip karakterdir. Bunu da göz önünde bulundurarak aşağıdaki kodlarla işimizi tamamlayabiliriz.

 

 

#include 
#include 
#include 
void tersYazdir(char *s);
int main()
{
char ch[255];
printf("Bir String Girisi Yapiniz :");
gets(ch);
tersYazdir(ch);
printf("Bitti ! ");
system("PAUSE");
}
void tersYazdir(char *s)
{
 int i ; 
 int uzunluk=strlen(s)-1;  // Uzunlugu bul  - Diziler 0 . dan basladıgından uzunlugun bir eksiği
 for(i=uzunluk; i>=0;i--)
  {
    printf("%c",s[i]);  // Son elemandan baslayarak karakter karakter ekrana basar.
    printf("");                      
  }
}

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Aytaç Cici

İstanbul Üniversitesi Bilgisayar Mühendisliği mezunu bir Yazılım Geliştirici. Çeşitli zamanlarda Java, PHP, C# ve Delphi gibi diller kullanarak yazılım geliştirmiştir. Bir dönem SEO alanında da çalışmalar yapmıştır.

Bir Cevap Yazın

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

Email
Print