• 29-12-2013, 10:18:58
    #1
    Deitel'in C ve C++ (Türkçe çeviri) kitabından C çalışıyorum.Programda şöyle bir uygulama yazılmış.Switch kontrol yapısını anlatmak amacıyla lakin kod doğru çalışmıyor.Kitaba göre EOF girildimi döngüden çıkması sonuçları göstermesi gerekiyor ama göstermiyor

    Acaba switch'deki break ifadeleri direkt olarak while döngüsünüde mi etkiliyor ondan mı oluyor?

    #include <stdio.h>
    
    int main()
    {
        int not;
        int aSay=0,bSay=0,cSay=0,dSay=0,fSay=0;
    
        printf("Harf notlarini girin(Cikis icin EOF):\n");
    
        while((not=getchar())!= EOF)
        {
            switch(not)
            {
                case 'a':case 'A':
                    ++aSay;
                    break;
    
                case 'b':case 'B':
                    ++bSay;
                    break;
    
                case 'c':case 'C':
                    ++cSay;
                    break;
    
                case 'd':case 'D':
                    ++dSay;
                    break;
    
                case 'f':case 'F':
                    ++fSay;
                    break;
    
                case '\n':case ' ':
                    break;
    
                default:
                    printf("Yanlis bir harf notu girildi.");
                    printf("Yeni bir not girin\n");
                    break;
    
            }
        }
    
        printf("\nHer harf notu icin toplam:\n");
        printf("A: %d\n",aSay);
        printf("B: %d\n",bSay);
        printf("C: %d\n",cSay);
        printf("D: %d\n",dSay);
        printf("F: %d\n",fSay);
    
        return 0;
    }
  • 29-12-2013, 12:40:34
    #2
    Windows için "ctrl + z" yada "f6" 'ya basıp enter derseniz, onu EOF olarak algılayıp while döngüsünden cıkacaktır.
    Kolay gelsin.
  • 29-12-2013, 13:59:12
    #3
    maviuan adlı üyeden alıntı: mesajı görüntüle
    Windows için "ctrl + z" yada "f6" 'ya basıp enter derseniz, onu EOF olarak algılayıp while döngüsünden cıkacaktır.
    Kolay gelsin.
    Teşekkür hocam oldu vallaNedenini anlayamadım ama neden direk EOF yazinca onu EOF olarak algılamıyor.
  • 29-12-2013, 14:00:46
    #4
    pcbagimlisi adlı üyeden alıntı: mesajı görüntüle
    Teşekkür hocam oldu vallaNedenini anlayamadım ama neden direk EOF yazinca onu EOF olarak algılamıyor.
    Rica ederim hocam oradaki EOF bir sözcükden ziyade farklı bir anlam taşıyor bu dil için. EndOfFile
  • 29-12-2013, 14:03:05
    #5
    maviuan adlı üyeden alıntı: mesajı görüntüle
    Rica ederim hocam oradaki EOF bir sözcükden ziyade farklı bir anlam taşıyor bu dil için. EndOfFile
    Evet biliyorum genellikle çoğu sistemde -1 değerine tekabül ediyormuş.Fakat kitapta bu şekilde windows için şunu yazın şeklinde bir ibare geçmemesine şaşırdım.Gerçi kitap baya eski windows'a göre yazılmamış olabilir.