int main()
{
int i,x;
char a[10];
i=154;
sprintf(a,"%d",i);
strrev(a);
printf("%s\n",a);
x=atoi[a]; //array subscript is not an integer hatası veriyor
x++;
printf("%d\n",x);
}

c bilmiyorum ancak o hata sanırım yukarıda diziyi tanımladığın "char a[10];" satırı ile ilgili. o satırı "int a[10];" değiştirip dene.


o tanımalamyı yapmazsam sayıyı ters çeviremiyorum. o yüzden int ten chara sayıyı aktarıp char ile strrev komutunu kullanıyorum. ardından ters çevrilmiş sayıyı tekrar int e çeviriyorum.


çok teşekkür ederim, insan kendi yazdığı koddaki hatayı göremiyormuş cidden. program çalıştı.


x=atoi[a]; degil x=atoi(a); olmasi gerekiyor.
atoi bir fonksiyon. fonksiyonlari koseli parantezle degil normal parantezi ile cagirmalisin.
www.cplusplus.com
madem yeni ogreniyorsun, aciklayayim neden hata aldigini;
koseli parantez koydugun an compiler atoi'yi bir array, koseli parantez icindeki a'yi da array'in index'i zannediyor. yalniz senin kodda ne atoi diye bir array tanimli ne de a degiskeninin tipi integer. zaten yapmak istedigin seyle de alakali da degil.


sayiyi once 100'e sonra 10'a bolup tek tek rakamlari elde etmelisin gibi geldi bana.
tabi float kullanmadan


madem c öğreniyorsun sana tavsiyem atoi'ni kendin yazman. String operasyonlarını implement etmiş olman ileride işine yarar, altta neler döndüğünü öğrenirsin. ascii'yi kurcala, 1 saate yazarsın.
