Sprawdzanie pełnoletności – problem walidacji wprowadzanych danych

0

Mam do napisania mini program, który ma za zadanie pierwsze sprawdzić czy to co wpisałem w konsoli jest liczbą, a potem ocenić czy liczba ta jest >= 18. Czyli czy ktoś jest pełnoletni czy też nie. Próbuje z isdigit, ale to sprawdza mi czy to co wpisałem jest cyfrą...Ma ktoś jakiś pomysł co z tym zrobić? Mam coś takiego

#include<stdio.h>
#include<ctype.h>
int main(void)
{
	int x;
	scanf("%d", &x);
	if (isdigit(x))
	{
		(x >= 18) ? printf("jest pelnoletni") : printf("nie jest pelnoletni");
	}
	else printf("nie wpisano liczby");
	return 0;
}
2

man scanf sekcja "Return Value"

0

Nie do końca zrozumiałem chyba.. może ktoś pokazać jak to ma wyglądać?

0

Sprawdź wartość zwróconą przez scanf, bo to ona mówi o tym ile udało się wczytać elementów.

0

Scanf zaczytuje jakby kod ASCII... natomiast isdigit sprawdza czy znak jest cyfrą, a nie liczbą...

0

scanf czyta wejście standardowe zgodnie z podanym formatem. Poprosiłeś o liczbę, to odczyta liczbę, a nie tekst. O tym czy się udało dowiesz się z wartości zwracanej przezeń. Nie wiem o co chodzi ze sprawdzaniem czy znak jest liczbą, bo wczytujesz liczbę, która - z definicji - jest liczbą.

0

no wlaśnie od dłuższego czasu mi coś nie pasuje w tym "programie"... pierwszy warunek ma rozstrzygnąć czy wprowadzone przez nas dane są właśnie liczbą czy też nie. Próbowałem z getcharem ale też się nie udało

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