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?..
int main(void) { char *s = "Bu bir \t \n \n denemedir "; int newLine = 0, tab = 0, space = 0, others; int i; for (i = 0; s[i] != '\0'; ++i) { switch (s[i]) { case '\n': ++newLine; break; case '\t': ++tab; break; case ' ': ++space; break; defualt: ++others; break; } } space, tab, newLine, others); return 0; }
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.
CSD C ve Sistem Programcıları Derneği