c++ conio.h

Başlatan kemanci_erdem, 08 Mayıs 2011 - 08:34:03

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

kemanci_erdem

konuyu açarken benzer konular vardı ama sorunumu çözmedi conio.h kütüphanesini nasıl eklerim codeblocks a aceba programlar çalışmıyor conio.h olunca.

travego0403

conio.h Windows platformu için yazılmış bir kütüphanedir. Windowsta program çalıştıktan sonra Terminal(Konsol, Uçbirim) Hemen kapanır.Bunu ekranda bekletmek içinde bu kütüphane içerisinde tanımlı olan bir tuşa basılana kadar bekleyen getch() fonksiyonu kullanılır.Bunu  Linux ta kullanmana gerek yok çünkü konsol hemen kapanmaz. Ama bu fonksiyonu klavyeden basılan tuşu almak için kullanacaksan bu fonksiyonun yaptığı işi yapan fonksiyonlar yazılmış ama hiç denemedim.Hatta forumda bile böyle bir kod parçası verilmişti sanırsam.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

kemanci_erdem

#2
Alıntı yapılan: travego0403 - 08 Mayıs 2011 - 09:12:08
conio.h Windows platformu için yazılmış bir kütüphanedir. Windowsta program çalıştıktan sonra Terminal(Konsol, Uçbirim) Hemen kapanır.Bunu ekranda bekletmek içinde bu kütüphane içerisinde tanımlı olan bir tuşa basılana kadar bekleyen getch() fonksiyonu kullanılır.Bunu  Linux ta kullanmana gerek yok çünkü konsol hemen kapanmaz. Ama bu fonksiyonu klavyeden basılan tuşu almak için kullanacaksan bu fonksiyonun yaptığı işi yapan fonksiyonlar yazılmış ama hiç denemedim.Hatta forumda bile böyle bir kod parçası verilmişti sanırsam.
conio.h ve getch() i siline düzeldi ama ilk denemede çalışmayan program 2. denemede açıldı codeblocks da mı soruın var aceba.

mami96

conio.h yani console input output dosyasi windows için konsol dosyasinda giris cikis islemlerini yapiyor. Linux icin olmuyor. Ama

iostream dosyasini ekleyin

#include <iostream>

sonra getch yerine cin.get koyunuz

Bakin ceviz'in buldugu en iyi yontemin kodlarinida yazayim buraya


#include <iostream>
using namespace std;
//#include <conio.h> kaldırıldı
int main()
{
    char dir='a';
    int x=10, y=10;

    cout<< "Type Enter to quit\n";
    while(dir!='\n') '           //'\r'  yerine '\n' koyuldu
    {
        cout<<"\nYour location is " << x << "," << y;
        cout <<"\nPress direction key (n,s,e,w): ";
        dir=cin.get();           //getche() yerine cin.get() koyuldu
        if(dir=='n')
        y--;
        else
        if(dir=='s')
        y++;
        else
        if(dir=='e')
        x++;
        else
        if(dir=='w')
        x--;
    }
    return 0;
}


sem

http://forum.ubuntu-tr.net/index.php/topic,25839.0.html

Ek: Programınızı Windows'ta da çift tık ile deil de, konsol ile çalıştırırsanız yine kapanmaz... Ya da bizim taraf için; programı uçbirimden değil de bir Uygulama Başlatıcı ile çalıştırırsanız yine aynı şekilde Windowstaki gibi kapanır...

".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Ozgurluk

Conio.h Dos için kullanılan bir başlık dosyasıdır. getch() fonksiyonun kaynak dosyası, <stdio> içinde tanımlıdır. Dolayısı ile Dos işlemleri kullanmıycaksanız Conio.h'a gerek yoktur. Ben yazdığım çoğu basit uygulamada kitaplarda ki alıştırmalarda conio.h olmasına rağmen kullanmıyorum. Fakat internette DevC++ gibi editörler kullanıyorsanız conio.h dosyasını nasıl başlık dosyalarının bulunduğu kütüphanenize ekliyceğinizi bildiren adımlar var.

getch() fonksiyonu için <stdio.h>

Bekleme için aynı zamadan klavyeden bir tuş almak yerine, sleep(1000); gibi bir deyimde kullanabilirsiniz.
Kolay gelsin.

sem

Alıntı yapılan: Ozgurluk - 25 Kasım 2011 - 13:45:37
Conio.h Dos için kullanılan bir başlık dosyasıdır. getch() fonksiyonun kaynak dosyası, <stdio> içinde tanımlıdır. Dolayısı ile Dos işlemleri kullanmıycaksanız Conio.h'a gerek yoktur. Ben yazdığım çoğu basit uygulamada kitaplarda ki alıştırmalarda conio.h olmasına rağmen kullanmıyorum. Fakat internette DevC++ gibi editörler kullanıyorsanız conio.h dosyasını nasıl başlık dosyalarının bulunduğu kütüphanenize ekliyceğinizi bildiren adımlar var.

getch() fonksiyonu için <stdio.h>

Bekleme için aynı zamadan klavyeden bir tuş almak yerine, sleep(1000); gibi bir deyimde kullanabilirsiniz.
Kolay gelsin.

Yani getch fonksiyonunu kullanabiliyorsunuz stdio.h başlığını eklediğinizde, bunu mu anlıyoruz buradan =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Ozgurluk

@sem0900 ezdiniz beni :D Ne diyim. :D :D :D :D Sizin bilgisayar konusunda gerçekten çok iyi olduğunuzu biliyorum. Fakat beni böyle ezmenize gerek yoktu. Ben her zaman getch(); kullanıyorum. getch(); için conio.h'a gerek yok. Demek istediğim conio.h'da tanımlı olan, clrscr();'i kullanmak yerine misal stdio'da tanımlı, system("CLS"); fonksiyonunu kullanmak. conio.h sadece dos işlemleri için geçerli bir başlık dosyasıdır onu demek istedim. Genellikle Turbo C (Borland ide)'lerde gelir. Onun yerine stansart ansi c fonksiyonları tercih edilebilir. Onu anlatmak istedim.

Alıntı yapılan: travego0403 - 08 Mayıs 2011 - 09:12:08
conio.h Windows platformu için yazılmış bir kütüphanedir. Windowsta program çalıştıktan sonra Terminal(Konsol, Uçbirim) Hemen kapanır.Bunu ekranda bekletmek içinde bu kütüphane içerisinde tanımlı olan bir tuşa basılana kadar bekleyen getch() fonksiyonu kullanılır.Bunu  Linux ta kullanmana gerek yok çünkü konsol hemen kapanmaz. Ama bu fonksiyonu klavyeden basılan tuşu almak için kullanacaksan bu fonksiyonun yaptığı işi yapan fonksiyonlar yazılmış ama hiç denemedim.Hatta forumda bile böyle bir kod parçası verilmişti sanırsam.

sem

Alıntı yapılan: Ozgurluk - 25 Kasım 2011 - 17:11:40
@sem0900 ezdiniz beni :D Ne diyim. :D :D :D :D Sizin bilgisayar konusunda gerçekten çok iyi olduğunuzu biliyorum. Fakat beni böyle ezmenize gerek yoktu. Ben her zaman getch(); kullanıyorum. getch(); için conio.h'a gerek yok. Demek istediğim conio.h'da tanımlı olan, clrscr();'i kullanmak yerine misal stdio'da tanımlı, system("CLS"); fonksiyonunu kullanmak. conio.h sadece dos işlemleri için geçerli bir başlık dosyasıdır onu demek istedim. Genellikle Turbo C (Borland ide)'lerde gelir. Onun yerine stansart ansi c fonksiyonları tercih edilebilir. Onu anlatmak istedim.

Alıntı yapılan: travego0403 - 08 Mayıs 2011 - 09:12:08
conio.h Windows platformu için yazılmış bir kütüphanedir. Windowsta program çalıştıktan sonra Terminal(Konsol, Uçbirim) Hemen kapanır.Bunu ekranda bekletmek içinde bu kütüphane içerisinde tanımlı olan bir tuşa basılana kadar bekleyen getch() fonksiyonu kullanılır.Bunu  Linux ta kullanmana gerek yok çünkü konsol hemen kapanmaz. Ama bu fonksiyonu klavyeden basılan tuşu almak için kullanacaksan bu fonksiyonun yaptığı işi yapan fonksiyonlar yazılmış ama hiç denemedim.Hatta forumda bile böyle bir kod parçası verilmişti sanırsam.

Rica ederim, lütfen yanlış anlaşılma olmasın... Benim aslında sorgulamak istediğim kısım şu idi;

Alıntı yapılan: Ozgurluk - 25 Kasım 2011 - 17:11:40
Ben her zaman getch(); kullanıyorum. getch(); için conio.h'a gerek yok. Demek istediğim conio.h'da tanımlı olan, clrscr();'i kullanmak yerine misal stdio'da tanımlı, system("CLS"); fonksiyonunu kullanmak.

Yoksa ezme falan, hiç olur mu öyle şey. Zaten düşündüğünüz kadar bir birikimim de yok açık sözlü olmak gerekirse. =)

Lakin  dediğim gibi sorgulamak istediğim ikinci alıntı yaptığım kısım idi... Biz bu tarafta system("clear"); kullanıyoruz, CLS Windows ortamına ait bir komut. Aynı şekilde getch() fonksiyonu da Windows kütüphanelerinde bulunduğu için bu tarafta stdio.h başlığını ekleyerek kullanamıyoruz. =)

Tek dikkat çekmek istediğim konu buydu... Yanlış anlaşılmaya mahal verdiysem kusura bakmayın lütfen. Dediğiniz gibi bir niyetim olmadı hiç bir zaman.

İyi çalışmalar.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Ozgurluk

#9
Ben biraz şaka olsun diye yazdım. Lütfen benim kusuruma bakmayın.Ben de hatalı biliyormuşum. Standart C başlık dosyaları dile biliyordum. Windows ortamında Dev C++ ide kullanıyorum. Gnu/linux kullanıcısıyım o ayrı. Fakat Dev C++ ortamı daha kullanışlı geliyor. Öğrenmek için C'yi, bir de ubuntu altında ara sıra Geany kullanıyorum.

Ben standart C fonksiyonları olarak görüyodum onları. Aynı başlık dosyaları içinde, kaynak kod olarak, getch();'da bulunduğunu düşündüm. Yani stdio.h'ın içinde, getch(); fonksiyonun kaynak kodu olduğunu bununda aynı şekilde diğer C ortamlarında Windows,Mac, Linux gibi çalışabilceğini düşündüm. Sonuçta yazdığımız kaynak kodlar az bir değişiklikle diğer platformlara taşınabiliyorlar.

Uyarılar için teşekkür ederim. Size de iyi çalışmalar.

sem

Evet, getch() çok standardize duruyor ama maalesef öyle değil. Dediğiniz gibi standart kodlar hatta hiç değişiklik yapmadan her ortamda çalıştırılabiliyor ama iş biraz ilerleyince ufak tefek değişiklikler gerekiyor. Bir yerden sonra epey değişiklik gerekiyor =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?