[]

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);

}

 
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.
  • 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

  • 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
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.