[c]suche neues fflush()

mike4004

Erfahrenes Mitglied
Hi

ich habe ein PRoblem unzwar bin ich jetzt von Windows auf Linux umgestiegen.

Und jetzt wollte ich Programmieren und leider spricht mein fflush(stdin) den stdin nicht an. Davon habe ich schon öfter gehört nur hat es mich damals nicht betroffen.

Frage wie schaffe ich es das der Buffer von stdin gelöscht wird wie schreibe ich mir eine solche funkion gibts da schon irgentwelche Lösungsansetze?

mfg mike4004
 
Hallo,
fflush ist ja AFAIK nur für Ausgabeströme...

Versuchs doch mal mit

C:
while (getchar() != '\n')
    ;

Gruß,

RedWing
 
Hi

jo danke auf den Schuss bin ich dann auch gekommen :)

Nur eine Frage ist das ganze nicht rechen aufwändig? (Rechen Leistung)

nur ich hab stat '\n' EOF genommen :)

void _flush(void)
{
while (getchar() != EOF);
}

MFG mike4004
 
Zuletzt bearbeitet:
Hallo,

nein ich denke nicht. Der Aufwand ist linear. Und soviel wirst du denke nicht
eingeben, so das deine Applikation dadurch übermäßig beansprucht wird.

Gruß,

RedWing
 
Hi

hier wäre noch ein heißer Kanitat der aber nicht auf meinem Mist gewachsen ist und ich habe keine ahnung was er ganau macht nur das Grundprenzip ist gleich mit while(...


C:
void flushstdin(void)
{
	struct termios initial_settings, new_settings;
    	
    	tcgetattr(0,&initial_settings);
	new_settings = initial_settings;
	new_settings.c_lflag &= ~ICANON;
	new_settings.c_cc[VMIN] = 0;
	new_settings.c_cc[VTIME] = 0;
        tcsetattr(0, TCSANOW, &new_settings);
    	while(getchar() != EOF);
    	tcsetattr(0, TCSANOW, &initial_settings);
}

mfg mike4004
 
Zurück