[]
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" 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);
}
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 (01.03.13 02:43:58)
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 (01.03.13 02:59:00)
çok teşekkür ederim, insan kendi yazdığı koddaki hatayı göremiyormuş cidden. program çalıştı.
- mubuto87 (01.03.13 03:27:53)
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.
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 (01.03.13 03:55:05 ~ 04:05:58)
sayiyi once 100'e sonra 10'a bolup tek tek rakamlari elde etmelisin gibi geldi bana.
tabi float kullanmadan
tabi float kullanmadan
- bir varmis bir yokmus (01.03.13 05:06:36)
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 (01.03.13 09:37:11)
1