char tablica[10];
int i=0;
for (i=0; i<5; i++){
printf("Wpisz cos: ");
fgets(tablica,sizeof(tablica),stdin);
printf("Wpisano: %s.",tablica);
}
Mam taki problem, że gdy wpiszę więcej znaków niż pozwala fgets to w następnym obiegu pętli wpisze się to co zostało, a chcę żeby można było pisać od nowa. Jak mogę wyczyścić to co zostało?
Nie chcę powiększać tablicy, właśnie chodzi o to żeby zareagować w odpowiedni sposób na taką sytuację. Nie chcę też używać scanfa.
Ten kod jest testowy/edukacyjny i nie robi nic odkrywczego.
fflush() służy do opróżnienia/wysłania strumieni wyjściowych a pytającemu potrzeba wyczyścić strumień wejściowy. W zależności jakiego systemu operacyjnego używa może to zrobić używająć fpurge() dla systemów BSD lub __fpurge() dla systemów GNU/Linux.
Wszystko zależy od środowiska uruchomieniowego. Przykładowo w systemie Windows funkcjata została przystosowana do czyszczenia strumienia wejściowego. Natomiast pod Linuxem już niekoniecznie.
W sieci znalazłem bardziej uniwersalną metodę na czyszczenie strumienia wejściowego, jeśli komuś zależy na przenośności kodu między platformami: LINK.