Dlaczego fflush (stdin) nie usuwa bufora (stdin) [duplikat]
To pytanie ma już odpowiedź tutaj:
Using fflush (stdin) 5 odpowiedziMam taki kod testowy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char c, str[20];
printf("Enter a character : ");
scanf("%c", &c);
printf("Enter a string : ");
fflush(stdin);
gets(str);
printf("\n\n\nResult : %c\n%s\n", c, str);
return 0;
}
Przeczytałem kilka artykułów o tym, że ten kod będzie działał, ponieważ po zeskanowaniu znaku c, w buforze nadal znajduje się znak „\ n”. Fflush (stdin) wyczyści bufor, więc funkcja gets () może działać poprawnie
Ale w rzeczywistości, kiedy kompiluję i uruchamiam ten kod w środowisku Mac OS, fflush (stdin) nic nie robi. Wprowadziłem znak (np. „K”), a następnie wypisałem znak k i znak „\ n”. Ma to pozwolić mi wprowadzić znak, ciąg, a następnie wydrukować oba z nich. Czy ktoś wie dlaczego? Dzięki