Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
1641
Tıklama
0
Öne Çıkarma
C de putchar() ve scanf konusunda sorun yaşıyorum
M
9 yıl
Yüzbaşı
Konu Sahibi

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 >

Q
9 yıl
Binbaşı

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 >
Bu mesaja 1 cevap geldi.
M
9 yıl
Yüzbaşı
Konu Sahibi

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

< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @VoldyTheAce
Q
9 yıl
Binbaşı

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.


Bu mesaja 1 cevap geldi.
M
9 yıl
Yüzbaşı
Konu Sahibi

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.

Videoyu izlemek için tıklayınız

Şurdaki adımları izleyip scanf kullanarak yaptım düzeldi.




Bu mesajda bahsedilenler: @VoldyTheAce
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.