Merhaba, c ile kodlama öğreniyorum daha çok yeniyim. yazmaya çalıştığım program bir sayıyı alıp tersine çevirip işlem yapıyor. örneğin 154 sayısını alıp 451 e çeviriyor sonra üzerine bir ekleyip 452 yapıyor. ama programı derlediğimde atoi kodunun olduğu satırda "array subscript is not an integer" hatasını alıyorum. çözümü nedir? program;

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.

gozyakansakiz

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.

mubuto87

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

mubuto87

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.

tdl

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

bir varmis bir yokmus

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.

samfisher
1

mobil görünümden çık