|
Informatyka UJ forum Rocznik 2005 - czyli najlepsze forum w sieci
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Stasiu
zielony żul
Dołączył: 16 Lis 2005
Posty: 920
Przeczytał: 0 tematów
Skąd: krk
|
Wysłany: Wto 1:50, 19 Gru 2006 Temat postu: [C/C++] Wczytywanie z konsoli |
|
|
Mam pytanie.
Potrzebuje sposob na skonstruowanie petli while, ktora sobie bedzie normalnie leciala, ale w momencie nacisniecia przycisku klawiatury wczyta mi wpisana wartosc? moze to byc pojedynczy znak, nawet nie musi byc potwierdzony enterem.
Ktoś pomoże? :P
|
|
Powrót do góry |
|
|
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Madras
Omylny Admin
Dołączył: 09 Lis 2005
Posty: 2021
Przeczytał: 0 tematów
Skąd: Z Pokoju :]
|
Wysłany: Wto 2:25, 19 Gru 2006 Temat postu: |
|
|
Hmm...
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Stasiu
zielony żul
Dołączył: 16 Lis 2005
Posty: 920
Przeczytał: 0 tematów
Skąd: krk
|
Wysłany: Wto 2:27, 19 Gru 2006 Temat postu: |
|
|
nooo, chyba nawet w paszczaku sie to dalo zrobic :p Bylo cos jak "keypressed;" ;)
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
exeman
Mistrz grilla
Dołączył: 03 Lut 2006
Posty: 1603
Przeczytał: 0 tematów
Skąd: znienacka
|
Wysłany: Wto 2:28, 19 Gru 2006 Temat postu: |
|
|
pod pascalem robilo sie to tak
repeat
{akcja}
if port[$80] <> 0 then
begin
ch:=readkey;
{obsluga klawisza}
end;
until false;
Ale:
1. to jest Pascal, a nie C
2. to jest stare rozwiazanie DOSowe.
Ogolnie pewnie trzeba bedzie sprawdzac jakos asmem stan bufora klawiatury, lub przekierowac standardowe wejscie jakos... Nie wiem
Ale moze cos pomoze, choc marne szanse...
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Stasiu
zielony żul
Dołączył: 16 Lis 2005
Posty: 920
Przeczytał: 0 tematów
Skąd: krk
|
Wysłany: Wto 2:31, 19 Gru 2006 Temat postu: |
|
|
a strumienie? cos mi swita z funkcja istream::peek(), ale nie do konca wiem jak dziala i nie bardzo przychodzi mi do glowy rozwiazanie ;p Jest jeszcze funkcja C kbhit, ale jak sie nacisnie klawisz chociaz raz, to juz do konca zwraca true. A jak sie czysci bufor w C to nie wiem :/
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Madras
Omylny Admin
Dołączył: 09 Lis 2005
Posty: 2021
Przeczytał: 0 tematów
Skąd: Z Pokoju :]
|
Wysłany: Wto 2:32, 19 Gru 2006 Temat postu: |
|
|
Spróbuj tego:
Kod: | #include <conio.h>
#include <cstdio>
int main() {
while( 1 ) {
if( kbhit() )
printf( "%d\n", getch() );
}
}
|
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Stasiu
zielony żul
Dołączył: 16 Lis 2005
Posty: 920
Przeczytał: 0 tematów
Skąd: krk
|
Wysłany: Wto 2:33, 19 Gru 2006 Temat postu: |
|
|
probowalem, patrz post wyzej :p
EDIT: chwile...
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Stasiu
zielony żul
Dołączył: 16 Lis 2005
Posty: 920
Przeczytał: 0 tematów
Skąd: krk
|
Wysłany: Wto 2:36, 19 Gru 2006 Temat postu: |
|
|
fuck :/
@Madras: rzeczywiscie dziala... nie wiem jak ja to sprawdzalem :o dzieki i sorry za zamieszanie.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
exeman
Mistrz grilla
Dołączył: 03 Lut 2006
Posty: 1603
Przeczytał: 0 tematów
Skąd: znienacka
|
Wysłany: Wto 3:09, 19 Gru 2006 Temat postu: |
|
|
Stasiu, bo pewnie kbhit sie czysci po getc :)
conio to ponoc bilioteka borlandowska, nie standardowa. podobno takze nie pojdzie to na linuxach. tam mozna to napewno zrobic selectami, ale to juz jest troche bardziej zamotane, za to dobrze opisane na googlach.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Stasiu
zielony żul
Dołączył: 16 Lis 2005
Posty: 920
Przeczytał: 0 tematów
Skąd: krk
|
Wysłany: Wto 3:16, 19 Gru 2006 Temat postu: |
|
|
exeman napisał: | Stasiu, bo pewnie kbhit sie czysci po getc | lol, ale debil ze mnie ;) fakt. Najciekawsze jest to ze kiedys chyba o tym slyszalem/czytalem, ale jakos tego nie skojarzylem :p
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Madras
Omylny Admin
Dołączył: 09 Lis 2005
Posty: 2021
Przeczytał: 0 tematów
Skąd: Z Pokoju :]
|
Wysłany: Wto 3:20, 19 Gru 2006 Temat postu: |
|
|
Ale bufor powinien się wyczyścić po jakimkolwiek zczytaniu wejścia, nie tylko po getc'ie.
Inna sprawa, że nie bardzo wiem, jak inaczej pobrać pojedyńczy znak z wejścia bez czekania na enter nie korzystając z getch'a ;P.
EDIT:
Kod: | #include <conio.h>
#include <cstdio>
int main() {
for( char k; 1; ) {
if( kbhit() ) {
scanf( "%c", &k );
printf( "%c\n", k );
}
}
} |
Ten przykład pokazuje, że najprawdopodobniej kbhit mówi, czy na konsoli znajdują się jakiekolwiek znaki, które jeszcze nie zostały zczytane do bufora programu. Bo inaczej tego wyjaśnić nie potrafię ;p.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
oinopion
żul
Dołączył: 28 Lis 2005
Posty: 858
Przeczytał: 0 tematów
Skąd: Kraków
|
Wysłany: Wto 9:55, 19 Gru 2006 Temat postu: |
|
|
polecam ncurses [dla linuksow].
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Stefan
pijak
Dołączył: 22 Lis 2005
Posty: 173
Przeczytał: 0 tematów
|
Wysłany: Wto 10:52, 19 Gru 2006 Temat postu: |
|
|
Nie da się zrobić tego przenośnie. Standardowymi strumieniami ani funkcjami z stdio się tego nie zrobi, bo wejście leci do bufora po naciśnięciu Entera.
W Borlandzie powinien być nagłówek conio.h, który ma wszystko to samo, co miał Turbo Pascal. W MinGW jest nagłówek conio.h, ale tam zdaje się jest tylko parę funkcji (w tym kbhit()).
Rozwiązanie z asemblerem będzie działać najprawdopodobniej tylko pod DOSem (w programie skompilowanym dla DOSa - czyli teraz pewnie DJGPP), bo Windows najprawdopodobniej wywali taki program.
Rozwiązanie, to na Linuksie - podane przez oinopiona - ncurses, na Windowsie i innych - PDCurses. Wersja PDCurses jest ZTCW bardzo zgodna z ncurses, więc będzie to pewnie kwestia wyłącznie zmiany nazwy #include'a i dołączenia odpowiednich bibliotek.
|
|
Powrót do góry |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
|