Yazar |
|
clairvoyant
Antalya
Kayıt: 05.05.2006 |
|
Arkadaşlar, C ile yapılan bir console uygulamasında konsoldan bir karakter katarını boşlularla birlikte bir karakter dizisine nasıl yerleştirebiliriz? Ben bir türlü işin içinden çıkamadım. Size karşılaştığım problemleri kısaca anlatayım:
scanf("%s", str);
Burada girilen katardaki ilk boşlukta okuma bitiyor, sonra işlem yapılıyor. İlerleyen kısımdaki ilk scanf fonksiyonu da otomatik olarak boşluktan sonraki katarları yeni bir boşluk karakterine kadar alıyor. Bu da programın istenilmeyen bir şekilde devam etmesine neden oluyor
gets(str);
Bu da nedense o andan önce başka bir iş için bir giriş yapılmışsa, gets fonksiyonu çalışmadan program devam ediyor, tabi str'nin içi boş oluyor. Yani hiç bir işe yaramıyor (bence).
Dosyadan okuma ile ilgili sorunları çözdüm. fgets ile satırları okuyup, format işlemini daha sonra yaparak istediğim sonuşları elde edbiliyorum. Ama fscanf aynı scanf gibi problem yaratıyor.
Yok mudur bu işin önceden çözülmüş bir methodu?
Yorumlarınızı bekliyorum..
Let`s make this world a better place to live !
|
|
Yazar |
|
avare
Istanbul
Kayıt: 09.10.2006 |
|
Benim bildiğim kadarıyla gets ile scanf arasında uyumluluk açısından yapısal bir bozukluk var. Yanlış hatırlamıyorsam, scanf en son girilen enter yani (newline karakterini) buffer da bırakıyordu. Bir sonraki gets de onu okuduğu için okumamış sanıyorsun. Herneyse, bunun basit çözümü; eğer çok fazla bi zorunluluk yoksa yalnızca birini kullanman olabilir. Yoksa klavyenin buffer ını temizlemen gerekir, onun da nasıl yapıldığını bilmiyorum.
siteden ayr?ld?m
|
|
Yazar |
|
clairvoyant
Antalya
Kayıt: 05.05.2006 |
|
avare yazdi | Benim bildiğim kadarıyla gets ile scanf arasında uyumluluk açısından yapısal bir bozukluk var. Yanlış hatırlamıyorsam, scanf en son girilen enter yani (newline karakterini) buffer da bırakıyordu. Bir sonraki gets de onu okuduğu için okumamış sanıyorsun. Herneyse, bunun basit çözümü; eğer çok fazla bi zorunluluk yoksa yalnızca birini kullanman olabilir. Yoksa klavyenin buffer ını temizlemen gerekir, onun da nasıl yapıldığını bilmiyorum. |
Ben de böyle düşünüyorum. Aslında kendim de bir input fonksiyonu yazmıştım ama neyse biraz daha uğraşayım belki birşey çıkar.
Let`s make this world a better place to live !
|
|
Yazar |
|
clairvoyant
Antalya
Kayıt: 05.05.2006 |
|
Problem hallolmuştur!
Let`s make this world a better place to live !
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
|