scanf girişi

mdkmdk
27-12-2009, 13:41   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
19 mesaj
Kayıt Tarihi:Kayıt: Eki 2006

arkadaşlar dev c de yazdığım bir programda ilk önce sayı girişi yapıp sonra karakter girişi yaptığımda hata oluyor. karakter girişi otomatikmen null oluyor. ilk önce karakter sonra sayı girersem sorun yok. yada secim=getch() diyerek karakter alırsam da oluyor. acaba bu neden kaynaklanıyor. nedeni nedir? örnek kod aşağıda: 
#include <stdio.h>
#include <conio.h>
main()
{
int sayi_1,sayi_2;
char secim;
printf("secimi girin\n");
scanf("%c",&secim);
printf ("2 Sayi Girin\n");
scanf("%d%d",&sayi_1,&sayi_2);

if (secim=='+')
printf("%d",sayi_1+sayi_2);
else if (secim=='-')
printf("%d",sayi_1-sayi_2);
else if (secim=='*')
printf("%d",sayi_1*sayi_2);
else
printf("yanlış giriş yaptınız");
getch();
}

Kapalı Hesap (153535)
31-12-2009, 20:36   |  #2  
Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

microsoft un c++ derleyicilerinde genellikle int main() kullanılıyor.Diğer türlü hata veriyor.Bundan kaynaklanmış olabilir mi?Gerçi senin derleyicin farklı ama.Belki de if else bloklarının içine yazdığın ifadelerle operatörler aynı olduğu için hata veriyordur.

eolos
01-01-2010, 12:19   |  #3  
Yıllanmış Üye
Teşekkür Sayısı: 0
2,036 mesaj
Kayıt Tarihi:Kayıt: May 2006

mainin türü nerede başına  int yazmalısınız

endazyar
24-01-2010, 14:11   |  #4  
Üye
Teşekkür Sayısı: 0
53 mesaj
Kayıt Tarihi:Kayıt: Oca 2010

ilk gırılen değeri %c ıle okuttugun ıcın karakter gırmelısın. sayı gırersen onun karakter karsılıgını alır o da seçimlerde  olmadıgı ıcın hata verır.yoksa basında int yazmasanda calısır.su anda programın calısıor olması gerekır.

scallywag
24-01-2010, 18:47   |  #5  
Yıllanmış Üye
Teşekkür Sayısı: 0
379 mesaj
Kayıt Tarihi:Kayıt: Ara 2007

Her iki şekilde aynı kodu Visual da denedim sorunsuz çalışıyor!

mdkmdk
26-01-2010, 14:42   |  #6  
OP Taze Üye
Teşekkür Sayısı: 0
19 mesaj
Kayıt Tarihi:Kayıt: Eki 2006

sorun dev c de sanırım. ama bir arkadaş yanıltladı. enter tuşu basıldığı için bu tamponda tutuluyor ve daha sonra string ifade okunacaksa buraya yerleştiriliyor. çözümü ise " %c" yani %c den önce bir boşluk bırakmak yetiyor. ilginenen arkadaşlara teşekkür ederim.

endazyar
27-01-2010, 00:21   |  #7  
Üye
Teşekkür Sayısı: 0
53 mesaj
Kayıt Tarihi:Kayıt: Oca 2010
Alıntı: mdkmdk  
sorun dev c de sanırım. ama bir arkadaş yanıltladı. enter tuşu basıldığı için bu tamponda tutuluyor ve daha sonra string ifade okunacaksa buraya yerleştiriliyor. çözümü ise " %c" yani %c den önce bir boşluk bırakmak yetiyor. ilginenen arkadaşlara teşekkür ederim.
sorunu daa yeni anladım ben.hangi işlemin yapılacağını ılk basta deılde sayıları aldıktan sonra sormak ıstıomuşsun.halletmişsiniz gerçi ama şunu söliim yine de sorun dev c de deil.visual da da aynı hatayı verir
" %c" yazmazsan eğer.enter yani \n bellekte kaldığı için %c direkt onu okur o yuzden hangi işlemin yapılacağını sormadan işlemi bitirir.aynı sorunla başka bi programda karşılaşmıştım. :) ii çalşmlr

alper35.5
31-01-2010, 13:13   |  #8  
alper35.5 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 0
390 mesaj
Kayıt Tarihi:Kayıt: Oca 2010

aynı sorun bendede vardı sorunu devc ye yormuş kendime toz kondurmamış ve kodu yazmayı bırakmıştım teşekkürler :)