Newsgroup: it.comp.lang.c
Titolo: Prendere in input un carattere senza invio

Vorrei sapere come fare (si può di certo) a evitare la pressione dell'invio
per la scanf() o una funzione simile, per far prendere un semplice char o un
int a una variabile. Appena lo scrivo il valore viene preso.
GRAZIE a tutti


#ifdef HAVE_TERMIOS_H
#include <termios.h>
   struct termios old_tc;
   struct termios new_tc;
void set_raw_term()  
{
    tcgetattr(0, &old_tc);
    new_tc = old_tc;
    new_tc.c_lflag &= ~(ECHO | ICANON);   /* raw output */
    new_tc.c_cc[VTIME] = 1;
    tcsetattr(0, TCSANOW, &new_tc);
}
void reset_term()
{
    tcsetattr(0, TCSANOW, &old_tc);
}
#endif
prima della scanf() o megli della read()  usei set_raw_term() dopo --e ricordati di farlo-- usi reset_term()
bye

Ora provo, comunque grazie infinite per l'aiuto 6 gentile.
P.S. Quelle funzioni le hai scritte tu o in qualche modo fanno parte del C?
O comunque,potresti dirmi che fonte hanno?
GRAZIE CIAO!

ALoR wrote:
Non sarebbe piů facile utilizzare una funzione di input senza buffer come 
getch() contenuto in curses.h in linux e conio.h in sistemi win?
Non fa parte dell'ANSI C ma č comunque abbastanza diffusa su varie 
piattaforme e fa proprio quello che snoopy chiede: prende un carattere in 
input e procede senza attendere INVIO dall'utente.
Se sbaglio fatemi sapere :-) ciao.
-- 
Davide Petilli
e-mail. 
davide....@NOSPAM.libero.it
Per scrivermi togli NOSPAM dal mio indirizzo!

 Non fa parte dell'ANSI C ma è comunque abbastanza diffusa su varie


getch() contenuto in curses.h in linux e conio.h in sistemi win?
"Quali" sistemi Win ?
getch() non e' supportata su diversi sistemi "win".
--
Andrea Laforgia (mica uno qualunque...)

a me risulta che getch chieda la pressione dell'invio.
No, getch() legge un tasto se non c'e' nessun tasto attende, ma niente
invio.
ciao, acc.   
a...@libero.it

 Andrea Laforgia (mica uno qualunque...)
-- 


includono tra le librerie distribuite con i loro compilatori.
Che io sappia, con i compilatori Microsoft non esiste alcuna
conio.h.


 conio.h.
Ma che dici (senza verificare)?
Certo che esistono.
Per applicazioni console.

 >
getch() sotto windows (console applications) funziona senza invio
(unbuffered)
getch() sotto linux e' un po' piu complesso (da configurare): leggi >man
getch

 Andrea Laforgia (mica uno qualunque...)
-- 


 a me risulta che getch chieda la pressione dell'invio.
probabilmente ti confondi con getchar(), che e' ANSI.
Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

Ma che dici (senza verificare)?
Ricordo che VC++ non distribuisce alcun conio.h, se mi
confermi il contrario, mi fai una persona felice.
In ogni caso stiamo parlando di un header non standard e
quindi si puo' affermare tutto e il contrario di tutto.


Che io sappia esiste, quando sviluppavo in win l'ho usata.
Con che compilatore ?
Stai parlando di un header non standard, quindi devi citare
il compilatore.


il compilatore.
Fino alla versione 7 sicuramente c'e', credo esista fino alla versione
Visual 1.52 (l'ultima che compila anche per DOS). Le versioni
successive compilano solo per windows, quindi credo che le librerie
'DOS' siano state tolte.
ciao, acc.   
a...@libero.it

'DOS' siano state tolte.
Allora ricordavo bene, VC++ 6.0 non possiede alcun conio.h,
(benche' possa produrre applicazioni console).


 Andrea Laforgia (mica uno qualunque...)
-- 


 (benche' possa produrre applicazioni console).
Veramente io ho VC++ 6.0 e #include <conio.h> non mi da' alcun
problema.....:)
Ciao ciao
Raibaz

 Andrea Laforgia (mica uno qualunque...)
ciao
donCiccio (uno qualunque...,quasi insignificante)

(benche' possa produrre applicazioni console).
No, mi dispiace sbagli, ho fatto una semplice ricerca nel mio hardisk
con il nome "conio.h" e mi ha mostrato questi file:
C:\Programmi\Dev-C++\Include\conio.h
C:\Programmi\Borland\BCC55\Include\conio.h
C:\Programmi\Microsoft Visual Studio\VC98\Include\conio.h  (MSVC++
6.0)
C:\DJGPP\include\conio.h
ho provato ad utilizzarla e funziona, quindi la conio.h in Vc++6.0 è
reale e funziona...
--
Rhymes
--------------------------
rhy...@myself.com
http://www.foxhound-games.it
http://embyte.mascanc.net
--------------------------
Linux User #219707

 confermi il contrario, mi fai una persona felice.
Felicita':
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VSa\10
33\vccore.chm::/html/_crt__getch.2c_._getche.htm
sarebbe la pagina su getch del MSDN (header conio.h librerie: LIBC.LIB,
LIBCMT.LIB,MSVCRT.LIB)

 (benche' possa produrre applicazioni console).
Aiuto!!!!!!!!!!
Un bel po' del mio lavoro non esiste allora, era solo un sogno, mah chi sa
se la Matrix......?!?!?!
Beh, almeno mi hanno pagato :-P

problema.....:)
Ah, ricordavo male...


problema.....:)
Puoi fare applicazioni che girano in DOS "puro" o solo in finestra
windows ?
ciao, acc.   
a...@libero.it

"acc" <a...@libero.ita> wrote in message
news:jd8dpt4uc404bu1oo...@4ax.com...

Solo 'win32 console application' (non DOS 6.2)

 Solo 'win32 console application' (non DOS 6.2)
Ah, ecco cos'e' :)
(Non si vede che sono un niubai, no :))
Raibaz


^_^
Giacche' c'e' una digressione su conio.h (quindi OT), allego questo
pezzettino di codice che usai ai tempi che furono, quando dovetti
compilare dei sorgenti C sia sotto borland che VC, usando un po' di
funzioni non ansi:
#ifndef _MSC_VER
   #include <bios.h>
   #include <alloc.h>
#endif
#include <dos.h>
#include <conio.h> /* mi sembra usassi il VC++1.51 o giu' di li...*/
#ifdef _MSC_VER
   #include <graph.h>
   #include <malloc.h>
   #define gotoxy(x,y)  _settextposition(x,y)
   #define clrscr()     _clearscreen(_GCLEARSCREEN)
   #define wherex()    (_gettextposition().col)
   #define wherey()    (_gettextposition().row)
   #define coreleft()   _memavl()
#endif
Il target purtroppo non lo ricordo, era DOS oppure Win32-console,
comunque cio' mi serviva per continuare ad usare le chiamate in
Borland-style...