[C] Funkcja scanf wczytuje samoistnie znak

Witam, podczas działania niżej przedstawionego kodu, program nie czeka na wpisanie literki przez użytkownika (WERS 92), ale samoistnie przechodzi dalej, podając, jakoby znk2==(klawisz Enter).

W jaki sposób można tego uniknąć?

znk=getch();
	switch(znk)
	{
		case '1' : 
	{
		j=0;
		printf("Wpisz liczbe: ");
		scanf("%d", &dec);
		char *l_binarna;
		l_binarna=DECtoBIN(dec);
		for (i=0; i<strlen(l_binarna); i++)
		{
			if (l_binarna[i]!='0') break;
		}
		
		for (j=i; j<strlen(l_binarna); j++)
		{
		printf("%c", l_binarna[j]);
		}
		
		printf("\nCzy zapisac do pliku? (t/n): ");
		scanf("%c", &znk2);
		
		if ((znk2=='t') || (znk2=='T')) printf("\nOdpowiedz twierdzaca");
		
	break;
	}

Pozdrawiam

Uzyj funkcji getch(), albo spróbuj %c%c

getch() znam, ale chodzi o zatwierdzenie enterem, po %c%c program sie krzaczy.

scanf(" %c", &c);

http://stackoverflow.com/questions/19794268/scanf-reading-enter-key

Po wpisaniu wartości dla scanf konsola dodaje \n (enter) do bufforu przez co kolejny scanf %c automatycznie go ładuje.

 

Edit:

Spacja w " %c" tak jak @drobok napisał powinna pomóc.

Działa ze spacją, dziękuję serdecznie. Właśnie tak myslałem, że to przez ów bufor. Szukałem jakiejś instrukcji nie wiem, zwalniającej pamięć bufora, ale nic nie znalazłem. 

fflush(stdin)

Uruchamiasz program pod Windows. Pod Windows znakiem nowej linii jest \r\h lub \n\r, więc może stąd konsola myśli, że nacisnąłeś dwa razy enter.

Okej, opcja fflush świetnie spełnia swoją funkcję.