Dodanie pętli do prostego programu

0

Witam,
Mam problem: gdy dodałem pętle do mojego prostego programiku dzieję się coś dziwnego, po każdym wczytaniu liczby program jakby wczytywał dwie.
Czy ktoś może mi wytłumaczyć co robię źle ?
Kod:

#include <stdio.h>

int main(int argc, char *argv[]) {
	char c;
	while(1)
	{
	printf("\nPodaj litere:");
	scanf("%c",&c);
	if(c>=65 && c<=90) printf("\nPodales duza litere");
	else if(c>=97 && c<=122) printf("\nPodales mala litere");
	else printf("\nTo nie jest litera!");
    }
	return 0;
}
1

Nic, po prostu jak wciskasz enter, to wysyłasz znak końca linii, który też jest odczytywany jako znak.

Przy okazji: używaj isupper i islower (i innych funkcji z nagłówka <ctype.h>) - użycie ASCII nie jest gwarantowane przez język C.

0

A można by było temu jakoś zapobiec ?

1

Możesz np. zignorować znak \n i przejść do następnej iteracji pętli gdy go napotkasz.

1

Na koniec swojej pętli dodaj:

while(getchar()!='\n') {}

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