Teknolojik ilerleme, patolojik bir suçlunun elindeki balta gibidir.

Albert Einstein

Böcek No: [1]
29 Haziran 2009 C - Genel

  Aşağıdaki kodda bir yazı içerisindeki NewLine, Tab, Space ve bunların dışında kalan karakterlerin sayısı bulunmak istenmiştir. Fakat ekrana yazdırılan sonuç hatalıdır. Böceği bulabilecek misiniz?..

Satır Numaralarını Gizle

  1. int main(void)
  2. {
  3. char *s = "Bu bir \t \n \n denemedir ";
  4. int newLine = 0, tab = 0, space = 0, others;
  5. int i;
  6.  
  7. for (i = 0; s[i] != '\0'; ++i) {
  8. switch (s[i]) {
  9. case '\n':
  10. ++newLine;
  11. break;
  12. case '\t':
  13. ++tab;
  14. break;
  15. case ' ':
  16. ++space;
  17. break;
  18. defualt:
  19. ++others;
  20. break;
  21. }
  22. }
  23.  
  24. printf("Space: %d Tab: %d NewLine: %d Others: %d\n",
  25. space, tab, newLine, others);
  26.  
  27. return 0;
  28. }

Yanıtı Göster

    switch deyiminde default anahtar sözcüğü yerine yanlışlıkla defualt yazılmıştır. Yanlış yazılan bu sözcük geçerli bir goto etiketi olarak değerlendirili. switch deyimi içerisinde goto etiketi kullanılabileceğine göre bu hata oluşturmaz. Bu nedenle others değişkeninin içerisindeki çöp değer ekrana yazdırılmaktadır.

Haftanın Böceği Yukarı