jak sprawdzić w C czy wprowadzona zmienna jest typu float

0

Witam,

chciałabym się zapytać, czy istnieje możliwość w języku C aby sprawdzić czy wprowadzona z klawiatury liczba jest typu float, nie używając przy tym tablic i wskaźników, wiem, że jest atof ale to działa dla double a mi chodzi o float. Problem jest tego rodzaju, że użytkownik ma podawać z klawiatury różne liczby w tym liczby zmiennoprzecinkowe i chodzi o to aby zabezpieczyć aby nie podał litery albo jakiegoś znaku (np. / * -+ ]).
Będę wdzięczna za odpowiedzi
Pozdrawiam

4

Generalnie to całe rozwiązanie problemu rozbija się o wprowadzenie mniej więcej takiego pytania w wyszukiwarkę -> How to check if user input is a float number in C?
Wynik: https://stackoverflow.com/questions/33621681/how-to-check-if-user-input-is-a-float-number-in-c

Jeśli chcesz sprawdzić czy wprowadzone dane są takie jakich się spodziewasz to używasz do tego funkcji scanf, która zwraca ilość poprawnie pobranych od usera danych. Jak wolisz bardziej elegancki sposób, który sprawdza na przykład czy wprowadzono spację w inpucie lub inne dane, które chcesz odrzucić to fgets jest Twoim przyjacielem. Później możesz użyć jakiegoś sscanf na buforze wczytanych znaków do wyciągnięcia jedynie floata lub użyć strtod tak jak jest to opisane na SO.

Ten mniej odporny na dziwne przypadki kod wygląda w ten sposób:

#include <stdio.h>

int main() {
	float a;
	if (scanf("%f", &a) == 1) {
		printf("%f\n", a);
	} else {
		puts("Wprowadzono nieprawidlowe dane");
	}
	return 0;
}
1

Jak podano wyżej. Mozesz też być zainteresowany wczytaniem wiersza z wejścia za pomocą fgets i spróbować odczytać przy użyciu sscanf, wtedy będziesz mógł wypisać niepoprawną wartość.

0

dziękuję wszystkim za odpowiedzi

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