Sayı tiplerini katara çevirme fonksiyonu yazalım

Sayı tiplerini katara çevirme fonksiyonu yazalım

Bir projemde lazım oldu kendi fonksiyonlarımı kendim yazmayı sevdiğim için hazır fonksiyon kullanmadım, zaten hazır fonksiyonlar her derleyicide çalışmıyor. C dilindeki standart olmayan “itoa” fonksiyonu gibi bir fonksiyon yazdım ondan farklı olarak sadece çeviri değil verdiğimiz dizi değişkenine sayının katar halini tek tek işliyor. Kodlar biraz kaba oldu 15dk’da yazdım, düzenlenirse daha az bellek harcayan daha düzgün bir hale getirilebilir.

void sayidan_katara(long long sayi , char katar[])
{
	int basamak_sayisi=0;
	long long i=0;

        //sayi max. 10 basamak diye kabul ediyoruz
	for(i=0;i<10;i++) //gelen katarda bulunan eski verileri siliyoruz
	{
		katar[i]=0;
	}

	i=sayi;
	while(i!=0)
	{
		i/=10;
		basamak_sayisi++;
	}

	for(i=basamak_sayisi;i>0;i--)
	{
		katar[i-1]=(sayi%10)+48; //0'ın ascii kodu, desimal 48'dir, 9'un ascii kodu ise 57'dir. Yani sayıya 48 ekliyoruzki asciiye çevirelim
		sayi/=10;
	}
}

Kullanımına örnek :

void main(void)
{
  long long sayi=4321222;
  char katar_sayi[10]=""; //maksimum 10 masamak
  sayidan_katara(sayi,katar_sayi);
  lcd_yaz(katar_sayi); //normalde lcd_yaz fonksiyonu sadece katar kabul ediyor bu yüzden çevirdik
}

Sayıya neden 48 eklediğimizi daha iyi anlamak için linkteki resimde, rakamların ascii kodlarına bakmanızı tavsiye ederim: http://www.theasciicode.com.ar/american-standard-code-information-interchange/ascii-codes-table.gif

Bir Cevap Yazın