Şimdi Ara

C de putchar() ve scanf konusunda sorun yaşıyorum

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
5
Cevap
0
Favori
886
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri
  • Son Yorum 7 yıl
  • Cevaplayan Üyeler 2
  • Konu Sahibinin Yazdıkları 3
  • Ortalama Mesaj Aralığı 3 saat 58 dakika
  • Son 1 Saatteki Mesajlar 2
  • Haberdar Edildiklerim (Alıntılar) 1
  • Konuya En Çok Yazanlar
  • mX-L4S3R (3 mesaj) Quadima (2 mesaj)
  • @
0 oy
Öne Çıkar
Giriş
Mesaj
  • Merhaba arkadaşlar programcılığa yeni başladım denebilir. Son yazdığım programda nedenini anlayamadığım bir sorunla karşılaşıyorum.

    Scanf ile putchar() komutlarının işlevleri aynı diye biliyorum ama programı scanf ile yazdığım zaman doğru şekilde çalışmıyor. Nerde hata yapıyorum tam olarak ?

    #include <stdio.h> 

    main()

    {
    char deger;

    printf("Turkiyenin baskenti neresidir ?\n\nA)Ankara\nB)Eskihesir\nC)Istanbul\n\n");

    deger = getchar();

    if (deger == 'a')
    {
    printf("\nDogru cevap!\n\n");
    }

    else { printf("\nYanlis cevap!\n\n");
    }
    }



    Yazdığım kod bu şekilde. Bu sorunsuz şekilde çalışıyor ancak deger = getchar(); kısmını scanf_s("%c", deger); şeklinde değiştirdiğim zaman klavyeden a tuşunu da girsem yanlış cevap diyor.

    Bir başka sorum büyük a karakterini A yı da tanımasını sağlamaya çalışıyorum ama onda da sorun yaşıyorum.

    if li kısmı if (deger == 'a' || 'A') şeklinde değiştiriyorum bu sefer de klavyeden hangi tuşu girersem gireyim doğru cevap diyor

    Edit : Bu arada vs 2013 kullanıyorum



    < Bu mesaj bu kişi tarafından değiştirildi mX-L4S3R -- 23 Ekim 2015; 21:32:58 >



    |
    |




  • scanf adresle çalışır.Yani

    scanf("%c",& deger);

    yaparsan sorun kalmaz.& deger demek deger değişkeninin adresini parametre olarak geçiyorsun.

    if(deger =='a' || deger=='A') yapmalısın.Senin yazdığının kabul edilme sebebi ise C dili 0 dışında herşeyi doğru kabul eder.Bakıyor deger değişkenine a değil,veya diyor diğer kısma geçiyor bakıyor 'A' var,direk doğru kabul eder.



    < Bu mesaj bu kişi tarafından değiştirildi Quadima -- 24 Ekim 2015; 1:45:58 >

  • Anladım hocam if'li kısımda değişkenin adını bir kere girsek yeter diye düşünmüştüm dediğin şekilde yaptım düzeldi.

    Ancak scanf komutu hala çalışmıyor konuyu açarken & işaretini scanfte koymayı unutmuşum onu düzelttim ama hala aynı.

     C de putchar() ve scanf konusunda sorun yaşıyorum
  • scanf_s fonksiyonunu daha önce görmemiştim büyük ihtimalle Microsoft'un yazdığı fonksiyonlardan biridir.Başka parametre alması gerekiyor olabilir,referansa bakarsan anlarsın.Onun yerine scanf kullan direk bakalım,çalışıyor mu.

  • Saolun hocam sorun ondan dolayıymış.

    VS 2013 scanf yerine scanf_s kullanmaya zorluyor. Kullanmadığım zaman program error verip çalışmıyor.

    Error 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.



    Şurdaki adımları izleyip scanf kullanarak yaptım düzeldi.
    |
    |
    VoldyTheAce kullanıcısının, bahsedilen mesajını gör




- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.