Walidacja poprawności danych w C


(Witos) #1

Witam mam taki problem:

Potrzebuję wczytać liczbę typu double, sprawdzając czy użytkownik podał ją poprawnie tzn odpadają np:

  • 123.F4

  • abc

  • a12

  • 12a

  • a?4

  • itd

Dodatkowo potrzebuję pętli która skończy się dopiero przy podaniu poprawnych danych, a przy niepoprawnych będzie wyświetlać komunikat

Próbowałem już na wiele sposobów, zawsze coś jest nie tak.

Podkreślam że to musi być ściśle w C, nie w C++;


(Sawyer47) #2

scanf zwraca liczbę poprawnie wczytanych danych: http://www.cppreference.com/wiki/c/io/scanf

Nie wystarczy to wprawdzie bo jeszcze musiałbyś sprawdzić czy po liczbie nie ma niedozwolonych znaków, więc może lepiej wczytać tekst, wstępnie go sprawdzić na obecność niedozwolonych znaków a potem użyć sscanf().