Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-01-2004, 08:18   #1
alderighi
Senior Member
 
L'Avatar di alderighi
 
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
Pulire il buffer di tastiera[c/c++]

Cerco una funzione che pulisca il buffer di tastiera, perchè sto costruendo un gico in stile asteroids per una esercitazione di scuola, lavoriamo su uno schifosissimo borland 5.02 in modalita grafica sotto dos a 256 colori, e non riesco a pulire i tasti premuti precedentemente neanche con fflush(stdin);, qualcuno di voi massimi esperti conosce un qualsiasi modo per poter risolvere questo problema, anche includendo delle librerie o con un pezzo di codice scritto in assembler, come vi pare, basta funzioni.
La navicella si sposta però avvolta rimangono in memoria i tasti premuti precedentemente e va un po come gli pare.
Cionci aiutami!!!
Grazie
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T.
alderighi è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2004, 13:11   #2
alderighi
Senior Member
 
L'Avatar di alderighi
 
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
up
nessuno che mi da una mano?
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T.
alderighi è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2004, 13:17   #3
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Un modo (non standard e poco pulito) è usare le funzioni di conio.h:
while(kbhit()) getch();
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 02-02-2004, 20:35   #4
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
fflush(stdin);
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 02-02-2004, 23:24   #5
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16215
Quote:
Originariamente inviato da Gogeta ss4
fflush(stdin);
E' una soluzione consigliata spesso.
Purtroppo non è standard, e può funzionare o meno a seconda del compilatore.
(E, a quanto ci dice alderighi, in questo caso non va.)

A proposito: catturare un segnale da tastiera (anziché leggere semplicemente un carattere dallo standard input) è un'operazione fortemente machine-dependent.
Temo che in questo caso sia d'obbligo consultare il manuale del compilatore.
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 15:43   #6
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Raga , io ho trovato anke

Codice:
while ( getchar() != '\n' );
e sembra funzionare , ank io avevo un problema con la funzione "scanf" (quando veniva inserito un carattere al posto di un intero la scanf "impazziva e andava in loop" ) , che ho risolto con questo codice qua sopra, ma per ste operazioni non c'è una procedura standard? Su linux ad esempio "fflush(stdin);" non va manco a pagarlo (dato che a quanto sembra fflush con stdin può dare risultati imprevisti) , cioè , io sul mio libro di C non ho trovato niente ,e non mi è sembrato di trovare niente neanke sul libro di quei ragazzacci di Kerningam e Ritchie , insomma , quand'è che questa operazione si rende necessaria generalmente , e qual'è la procedura migliore per farla?

Grazie

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 15:56   #7
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Su linux ad esempio "fflush(stdin);" non va manco a pagarlo
#include <termios.h>
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 16:13   #8
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827





Ma dici che è una soluzione consigliabile anke se non specificata dallo standard?

Ciao

EDIT : Comunque ilsensine , ho provato a fare come mi hai detto tu , ossia includere "termios.h" , e poi ho provato "fflush(stdin);" , al posto del codice che avevo postato poco sopra , ma non sembra funzionare , con questa va in LOOP e genera una roba del genere :

00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in instruction shell
00 ? Sorry , no letters in inst
bash-2.05b$



Mentre dovrebbe essere :

00 ? s
Sorry , no letters in instruction shell
00 ?


__________________
GPU Compiler Engineer

Ultima modifica di AnonimoVeneziano : 04-02-2004 alle 16:17.
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 16:47   #9
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da AnonimoVeneziano
Ma dici che è una soluzione consigliabile anke se non specificata dallo standard?
Certo che è standard (POSIX)

Quote:
EDIT : Comunque ilsensine , ho provato a fare come mi hai detto tu , ossia includere "termios.h" , e poi ho provato "fflush(stdin);" , al posto del codice che avevo postato poco sopra , ma non sembra funzionare , con questa va in LOOP e genera una roba del genere :
Scordati fflush!
Dai una occhiata a man termios
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 17:06   #10
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Mi inginocchio al tuo cospetto , e ti chiedo umilmente di dirmi come esare le funzioni di sto header per flushare lo STDIN , perchè nella mia somma ignoranza non riesco a decifrare una pippa del man di "termios"

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 19:46   #11
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Nun me abbandonà ilsensì!!

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 20:14   #12
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
tcflush?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 20:20   #13
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da ilsensine
tcflush?

Si , l'avevo pensato ank io , ma il problema è come lo uso?

Cioè , io sono ankora un principiante , e del MAN non ci ho capito una mazza .

Ho solo capito che al secondo membro della funzione ci devo piazzare "TCIFLUSH" e quindi diventa :

tcflush(XXX, TCIFLUSH);

ma al primo membro che ci metto?

Ho provato

tcflush(stdin, TCIFLUSH);

Ma ovviamente non funziona e mi spara sto warning alla compilazione:

simpletron.c: In function `main':
simpletron.c:40: warning: passing arg 1 of `tcflush' makes integer from pointer without a cast


Come la devo configurare sta funz?
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 20:42   #14
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
man fileno
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 20:56   #15
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Ho tentato sta forma , ma non sembra funzionare :

tcflush(fileno(stdin), TCIFLUSH);


Avrebbe dovuto funzionare o ho scannato anke in questo caso?

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 21:02   #16
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Boh ho provato, e mi funziona...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 21:16   #17
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da ilsensine
Boh ho provato, e mi funziona...

A me no , ho provato anke con sto programmino di prova :

Codice:
#include <stdio.h>
#include <termios.h>

int main()
{

int prova;

scanf("%d", &prova);
printf("%d\n", prova);
tcflush(fileno(stdin), TCIFLUSH);
scanf("%d", &prova);
printf("%d\n", prova);
return 0;
}
Ma il secondo scanf , se metto un carattere al posto di un intero al momento dell' immissione dell'input del primo scanf, è come se non esistesse , in pratica l'output che ottengo è questo :

Codice:
bash-2.05b$ ./test     <------ Parte il programma
a                       <------ Immetto un carattere al posto di un intero
1073821792     <------  Viene printato un valore intero dal primo printf
1073821792     <------  Il secondo scanf è come se non esistesse e viene subito printato il valore dal secondo printf
bash-2.05b$
Idee?



Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 21:23   #18
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da AnonimoVeneziano
Idee?
Sì, ma ora devo staccare. Ne riparliamo domani.

(Indizio: stdin è line-buffered di default)
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 21:25   #19
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da ilsensine
Sì, ma ora devo staccare. Ne riparliamo domani.

(Indizio: stdin è line-buffered di default)

Ok , ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2004, 08:25   #20
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Codice:
#include <stdio.h>
#include <termios.h>

int main() {
  int prova;
  struct termios tios;
  int fd = fileno(stdin);

  tcgetattr(fd, &tios);
  tios.c_lflag &= ~ICANON;
  tios.c_cc[VMIN] = 1;
  tios.c_cc[VTIME] = 0;
  tcsetattr(fd, TCSAFLUSH, &tios);

  scanf("%d", &prova);
  printf("%d\n", prova);
  tcflush(fd, TCIFLUSH);
  scanf("%d", &prova);
  printf("%d\n", prova);
  return 0;
}
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Find X10 Pro Max di OPPO arriverà...
L'IA scriverà codice migliore del suo st...
Valve apre le prenotazioni di Steam Fram...
ECOVACS T50 OMNI Gen3 a 379€: il riferim...
Netflix e Sega insieme: arrivano i film ...
Veeam ottiene la certificazione da parte...
XIAOMI Redmi Buds 8 a 37,94€: auricolari...
Il fotovoltaico scende sott'acqua: nuove...
Microsoft chiede supervisione umana nell...
MicroSD Samsung T9 da 256GB a 65,88€: sc...
Una RTX 3090 e nessuna riga di codice: Q...
Windows e Excel di nuovo nel caos dopo i...
Nuovi Samsung Galaxy S26 FE ora disponib...
EU Kids Act: una legge per riscrivere l'...
IonQ annuncia Superion 256, un computer ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v