(6)
C ile ilgili bir sorun
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" ha
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);
}
0
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.
0
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.
0
çok teşekkür ederim, insan kendi yazdığı koddaki hatayı göremiyormuş cidden. program çalıştı.
0
x=atoi[a]; degil x=atoi(a); olmasi gerekiyor.
atoi bir fonksiyon. fonksiyonlari koseli parantezle degil normal parantezi ile cagirmalisin.
www.cplusplus.commadem 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.
0
sayiyi once 100'e sonra 10'a bolup tek tek rakamlari elde etmelisin gibi geldi bana.
tabi float kullanmadan
0
bir varmis bir yokmus
(
01.03.13)
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.
0