Debianizzati.Org | Forum | Blog | Guide | IRC
 
 
Forum Italiano Debian - Debianizzati.Org
Novembre 22, 2008, 05:09:27 pm *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Aiuto Ricerca Agenda Accedi Registrati  
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Esiste un modo alternativo o una funzione simile a getch() del Borland con il compilatore gcc?  (Letto 1039 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
doom
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 31


Mostra profilo E-mail
« inserita:: Luglio 01, 2005, 12:38:11 am »

Ho iniziato da poco a programmare in ambiente Denian-linux in c, mi sono subito imbattuto in una differenza con il compilatore Borland c, con quest'ultimo era possibile attraverso la libreria conio.h avere a disposizione una funzione getch() che attenda che sia digitato un carattere a tastiera e nell'evento in cui questo venga premuto, assegna il valore di questo tasto direttamente senza premere invio ad una  variabile char. Esempio: c=getch(); Questa istruzione assegnera il primo singolo carattere che verrà premuto sulla tastiera alla variabile c. Consultando comunque molte fonti ho visto che esiste una funzione getchar(), che corrisponde in funzionalità a getch() citatata sopra, ma non totalmente, perche questa dopo aver digitato il primo aspetta che voi premiate invio. Esiste un modo alternativo o una funzione simile a getch() del Borland con il compilatore gcc?
Registrato
keltik
Hero Member
*****

Karma: +14/-0
Scollegato Scollegato

Messaggi: 1447



Mostra profilo WWW E-mail
« Risposta #1 inserita:: Luglio 01, 2005, 12:56:42 am »

sono l' essere vivente su questo pianeta più distante dalla programmazione ma ...
Codice:
$ man getch
si parla di ncurses, ma forse può fare al caso tuo o darti qualche dritta.
Registrato

doom
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 31


Mostra profilo E-mail
« Risposta #2 inserita:: Luglio 01, 2005, 11:02:17 am »

Mi dice che non c'è il manuale getch
Registrato
keltik
Hero Member
*****

Karma: +14/-0
Scollegato Scollegato

Messaggi: 1447



Mostra profilo WWW E-mail
« Risposta #3 inserita:: Luglio 01, 2005, 11:13:54 am »

in effetti in locale le pagine man esistono *solo* per ciò che hai installato. avresti dovuto cercare nella pagine man online ;-)

comunque puoi leggere di più qui (ad esempio):
http://keltik.homelinux.org/cgi-bin/man/man2html?query=getch

googleando ho trovato questo link:
http://lists.linux.it/pipermail/folug/2003-September/006052.html
parla di conio.h, ncurses e rhide

 :ciauz:
Registrato

Ldonesty
Hero Member
*****

Karma: +9/-0
Scollegato Scollegato

Messaggi: 762



Mostra profilo E-mail
« Risposta #4 inserita:: Luglio 01, 2005, 11:57:44 am »

Citazione

doom ha scritto:
Mi dice che non c'è il manuale getch

Probabilmente devi installare manpages-dev.
Registrato

Il reggiseno e' uno strumento democratico perche' separa la destra dalla sinistra, solleva le masse e attira i popoli.
doom
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 31


Mostra profilo E-mail
« Risposta #5 inserita:: Luglio 01, 2005, 10:15:29 pm »

Ho provato ad installare manpages-dev, ma niente da fare il manuale getch non c'è.
Registrato
Ldonesty
Hero Member
*****

Karma: +9/-0
Scollegato Scollegato

Messaggi: 762



Mostra profilo E-mail
« Risposta #6 inserita:: Luglio 02, 2005, 12:53:35 am »

Citazione

doom ha scritto:
Ho provato ad installare manpages-dev, ma niente da fare il manuale getch non c'è.

Ho controllato meglio sul sito debian (confrontando anche con l'output iniziale del man di getch) e se non ho sbagliato alla grande, probabilmente appartiene a libncurses5-dev.
Prova ad installare questo pacchetto e a vedere se risolvi.
Registrato

Il reggiseno e' uno strumento democratico perche' separa la destra dalla sinistra, solleva le masse e attira i popoli.
le0n
Hero Member
*****

Karma: +1/-0
Scollegato Scollegato

Messaggi: 517


Mostra profilo E-mail
« Risposta #7 inserita:: Luglio 02, 2005, 03:35:02 pm »

nella libreria conio.h è presente anche getche, getchar, getc...
sotto linux puoi rimediare con una scanf("%c", &variabile);  :-D ...
l'effetto è lo stesso ;-)

Hasta!
Registrato

Coltiva linux tanto windows si pianta da solo
Nessun sistema è sicuro se c'è un idiota a gestirlo!
La mia Debian sul portatile HP Pavilion dv6270EU
doom
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 31


Mostra profilo E-mail
« Risposta #8 inserita:: Luglio 02, 2005, 11:02:46 pm »

Il problema che risolvo con scanf("%c",&var) lo risolvo anche che con la getchar() che è una funzione della libreria stdio.h.
Ma queste due funzioni appena citate prima di assegnare il valore aspettano che io prema invio, cioè digito un carattere e poi perchè questo venga assegnato alla variabile devo premere anche invio, invece con la getch() della della conio.c non bisogna premere invio, perchè appena viene premuto il tasto viene subito assegnato.
Comunque grazie ai link citati da keltik sono riuscito a capire che ho bisogno della libreria ncuses che se provo ad installare con apt-get install ncurses, mi dice:

Il pacchetto ncurses non è disponibile, ma è citato da un altro pacchetto.
Questo può significare che il pacchetto manca, è diventato obsoleto o è disponibile
solo da un'altra sorgente
E: Il pacchetto ncurses non ha candidati da installare

Qualcuno sa dove trovarla o come installarla?
Registrato
Ldonesty
Hero Member
*****

Karma: +9/-0
Scollegato Scollegato

Messaggi: 762



Mostra profilo E-mail
« Risposta #9 inserita:: Luglio 02, 2005, 11:17:53 pm »

Ti dovrebbero bastare: ncurses-base, ncurses-bin, ncurses-term.
:ciauz:
Registrato

Il reggiseno e' uno strumento democratico perche' separa la destra dalla sinistra, solleva le masse e attira i popoli.
The_Noise
Administrator
Hero Member
*****

Karma: +25/-2
Scollegato Scollegato

Messaggi: 884



Mostra profilo E-mail
« Risposta #10 inserita:: Luglio 04, 2005, 01:11:44 pm »

Ehm...

penso che le librerie di sviluppo siano nel pacchetti libncurses-dev (che tra l'altro è il pacchetto che contiene il man).

Per poter leggere un carattere senza premere invio devi cambiare le opzioni del terminale.

Questa è una spiegazione di perchè funziona così (e del fatto che la funzione del borland non è assolutamente standard):

http://lists.suse.com/archive/suse-programming-e/2004-Feb/0019.html

Qui invece trovi un esempio di condice multipiattaforma che implementa l'imput a singolo carattere senza invio:

http://forums.devarticles.com/archive/t-8613/Maze-game-input-char-without-pressing-enter

Trovi di tutto e di più nei man o al limite su google.


 :ciauz:

PS Se raggiungi l'obiettivo, saremmo contenti di leggere un esempietto in c :-D
Registrato
doom
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 31


Mostra profilo E-mail
« Risposta #11 inserita:: Luglio 04, 2005, 11:54:34 pm »

Ok, l'ho installata, ma quando vado a a compilare un file c del tipo:

#include
#include

int main(void){
char c;
c=getch();
printf("%c\n",c);
}

Il compilatore mi dice che non riesce a trovare la libreria ncurses.h che a sua volta contiene la funzione getch();

Come faccio ad includerla?
Registrato
doom
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 31


Mostra profilo E-mail
« Risposta #12 inserita:: Luglio 14, 2005, 01:28:43 am »

Ragazzi grazie mille e soprattutto ai link che mi ha fornito keltik che sono stati molto utili.
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Altri Topic Correlati
Oggetto Aperta da Risposte Visite Ultimo messaggio
esiste il modo di bloccare un "dist-upgrade"?? Apt-get & friends pistolinux 2 250 Ultimo messaggio Dicembre 06, 2005, 06:33:51 pm
da xtow
Installazione aMule o simile Installazione « 1 2 » Sicario 22 1065 Ultimo messaggio Settembre 21, 2007, 12:15:29 pm
da ari
Simile a WinRAR Generale « 1 2 » Sicario 22 659 Ultimo messaggio Maggio 19, 2007, 09:19:13 pm
da Sicario
Installare il compilatore intel C/C++ su Debian (unstable) Installazione manzo 6 1030 Ultimo messaggio Ottobre 22, 2007, 12:54:15 pm
da manzo
Installazione compilatore PGI Programmazione bomberjava 1 218 Ultimo messaggio Luglio 25, 2008, 02:23:58 am
da bomberjava
Powered by MySQL Powered by PHP Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC XHTML 1.0 valido! CSS valido!
Pagina creata in 0.103 secondi con 20 interrogazioni al database.