• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C] Jak powtórzyć prośbę o podanie liczby scanf

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
562 wizyt
pytanie zadane 18 marca 2016 w C i C++ przez programmero Bywalec (2,420 p.)

Witam mam prosty program którego zadaniem jest proszenie o wpisanie liczby dopóki użytkownik nie wpisze liczby parzystej.

Niestety nie wiem jak zrobić walidację danych gdyż jeżeli wpiszę ciąg znaków (spacje, literki itp) to program się kończy zamiast poprosić o podanie liczby.

Kod w czystym C.

#include <stdio.h>

int main()
{
	int liczba;
	/* pytam tak dluga az uzytkownik wpisze liczbe parzysta */
	do {
		printf("podaj liczbe ");
		scanf("%d", &liczba);
	} while((liczba%2)!=0);
	return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 18 marca 2016 przez jpacanowski VIP (101,940 p.)

scanf() zwraca liczbę poprawnie wczytanych danych
http://en.cppreference.com/w/cpp/io/c/fscanf

komentarz 20 marca 2016 przez programmero Bywalec (2,420 p.)

Mógłbyś mi pomóc w zapisaniu kodu gdyż utknąłem?

#include <stdio.h>
 
int main()
{
    int liczba;
    do {
        printf("podaj liczbe: ");
        scanf("%d", &liczba);
    } while ( (scanf("%d", &liczba) == 0) || ((liczba % 2) != 0) );
    return 0;
}

 

+1 głos
odpowiedź 18 marca 2016 przez Krawiec91 Pasjonat (19,600 p.)

Funkcja scanf() zwraca ilość wprowadzonych poprawnie wprowadzonych danych (zmiennych), ciężko mi to bardziej fachowo ująć. Przekładając na język ludzki:
 

int liczba1;
scanf("%d",&liczba1);

Funkcji scanf(), z uwagi na to, że zwraca wartość typu int, możesz użyć w warunku pętli. Jeśli wprowadzisz z klawiatury, np. literę scanf() zwróci wartość 0 (false), jeśli liczbę całkowitą to scanf() zwróci wartość true.

komentarz 20 marca 2016 przez programmero Bywalec (2,420 p.)

Mógłbyś mi pomóc w zapisaniu kodu gdyż napisałem do tej pory coś takiego i utknąłem

#include <stdio.h>

int main()
{
	int liczba;
	do {
		printf("podaj liczbe: ");
		scanf("%d", &liczba);
	} while ( (scanf("%d", &liczba) == 0) || ((liczba % 2) != 0) );
	return 0;
}

 

Podobne pytania

0 głosów
2 odpowiedzi 544 wizyt
pytanie zadane 14 grudnia 2019 w C i C++ przez PirchHD Obywatel (1,730 p.)
0 głosów
4 odpowiedzi 1,938 wizyt
pytanie zadane 26 maja 2017 w C i C++ przez Kuba2263 Nowicjusz (200 p.)
0 głosów
1 odpowiedź 1,970 wizyt
pytanie zadane 28 marca 2017 w C i C++ przez Kamil Duljas Użytkownik (990 p.)

93,440 zapytań

142,431 odpowiedzi

322,678 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...