C stdin clearen; fflush unter Linux?
Hallo, mein Programm läuft unter Windows. Dort nehme ich fflush um stdin zu leeren.
Unter Linux geht das so nicht, und ich weiß nicht, wie ich es sonst machen soll.
https://onlinegdb.com/H1TLXWIzL
Gibt man z.B. immer 222 ein, so kommt direkt danach die Ausgabe "Test" (So ist es richtig)
Gibt man aber immer nur eine 2 ein, so geschieht das erst alle 2 Zeilen. (Falsch)
Laut Debugger bin ich stuck in der while Schleife, welche stdin leer machen soll. Hat wer ne Idee wie ich das beheben kann?
#include <stdio.h>
#include <stdlib.h>
int test(){
char input[3];
for(;;){
fgets(input, 3, stdin);
if(input[0] == '1'){
return atoi(input);
}
printf("Test\n");
while ((getchar()) != '\n');
/*fflush(stdin);*/
}
}
int main() {
int inp;
inp = test();
printf("%d", inp);
return 0;
}