Problem z while ((ch=getchar())!=EOF) i ENTEREM

0

Od 29 czerwca uczę się języka C. Wszystko mi gładko szło do teraz. Oto zadanie:
Napisz program, który odczytuje dane wejściowe do momentu napotkania końca pliku i wyświetla każdy znak wraz z jego dziesiętnym kodem ASCII. W jednym wierszu powinno znajdować się dziesięć par znak-kod, ale odczytanie znaku nowej linii powinno pociągać za sobą rozpoczęcie nowego wiersza. Znaki niedrukowane o kodach mniejszych niż kod spacji powinny być traktowane w szczególny sposób. Jeśli znak jest tabulatorem lub znakiem nowej linii, należy wyświetlić odpowiednio \t lub \n. Inne znaki niedrukowane należy przedstawić w postaci znaków sterujących. Na przykład, znak o kodzie 1 to Ctrl-A, co można zapisać jako ^A. Zwróć uwagę, że kod ASCII litery a jest o 64 większy niż kod znaku Ctrl-A. Podobna zależność zachodzi dla innych znaków niedrukowanych.
I mój kod:

#include <stdio.h>
int main(void)
{
	int ch, licznik=0;
	printf("Cwiczenie 8.2 w jezyku C - autor: xpeye\n\n");
	printf("Podaj dane znakowe z EOF na koncu: ");
	while ((ch=getchar())!=EOF)
	{
		licznik++;
		if (ch<' ')
		{
			if (ch=='\t')
			printf("\\t-%d ", ch);
			else if (ch=='\n')
			{
				printf("\\n-%d\n", ch);
				licznik=0;
			}
			else
			printf("^%c-%d ", ch+64, ch);
		}
		else
		printf("%c-%d ", ch, ch);
		if (licznik%10==0)
		printf("\n");
	}
	printf("\nKoniec");
	getchar();
	getchar();
	return 0;
}

Problem mam z while ((ch=getchar())!=EOF) Po wciśnięciu ENTER program nie traktuje go tylko jak zwykłego znaku, ale wysyła do programu zawartość bufora a powinien to zrobić dopiero po ^Z. Gdzie zrobiłem błąd?

Ps.Mam Windows 7 Home Premium

0

bo getchar() to nie getch() i działa dziwnie:

· pierwsze wywołanie czeka na wpisanie tekstu z klawiatury i naciśnięcie entera. ale funkcja zwraca tylko pierwszy znak wpisanego tekstu.
· kolejne wywołania zwracają bez czekania kolejne znaki wpisanego tekstu, aż do jego wyczerpania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1