Закавыка с языком C

Закавыка с языком C.
Проблема заключается в том, что не выполняется последний scanf и printf, но если его поставить в начало всё будет работать, в чём ошибка?

#include
#include
#include
void main()
{
char c;
int i;
long l;
float f;
clrscr();
scanf("%i",&i);
printf("%in",i);
scanf("%li",&l);
printf("%lin",l);
scanf("%f",&f);
printf("%fn",f);
scanf("%c",&c);
printf("%cn",c);
getch();
}

  • #include
    #include
    int main() {
    char c;
    int i;
    long l;
    float f;
    system("cls");
    scanf("%i", &i);
    printf("%in", i);
    scanf("%li", &l);
    printf("%lin", l);
    scanf("%f", &f);
    printf("%fn", f);
    fflush(stdin);
    scanf("%c", &c);
    printf("%cn",c);
    getchar(); getchar();
    return 0;
    }
  • flushall (); // очистка всех входных буферов
    scanf("%c",&c);
    printf("%cn",c);

    Проблема в том, что считывает остаток буфера от прошлого скана