pętla while

0

Mam problem z pętlą while.
Jeżeli użytkownik podaje inną literę niż S,s,c,C to program ma wyświetlić komunikat Incorrect input i ponownie wyświetlić tekst zachęty do wprowadzenia litery. Mój kod natomiast działa w ten sposób:

// to co jest wyświetlane na konsoli: 
Podaj rodzaj modyfikacji: k
Incorrect input
Podaj rodzaj modyfikacji: Incorrect input   
Podaj rodzaj modyfikacji: s
OK

czyli trzecia linijka jest niepotrzebna. Jak to można naprawić?

Oto mój kod:

int main() {
	char c;
	while(!(c=='s'||c=='S'||c=='c'||c=='C')){
		printf("Podaj rodzaj modyfikacji: ");
		scanf("%c",&c);
		if(!(c=='s'||c=='S'||c=='c'||c=='C')){
			printf("Incorrect input\n");
		}
		else
			printf("OK");
	}
	return 0;
}

W zadaniu nie można używać funkcji fflush.

0

Na przykład tak:

int main() 
{
    char c;
    do
    {
        printf("Podaj rodzaj modyfikacji: ");
        scanf(" %c", &c);//kluczowa jest tutaj spacja przed %c
        c = tolower(c);
        if (c == 's' || c == 'c')
        {
            printf("OK");
            break;
        }
        else
        {
            printf("Incorrect input\n");
            continue;
        }
    }
    while (true);
    return 0;
}

https://onlinegdb.com/B1YoJwvtV

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