Wartość zwracana przez scanf

Odpowiedz Nowy wątek
2014-12-28 22:24
0

Czytając "Szkołę programowania w C" Stephena Praty natknąłem się na wykorzystanie zwracanej przez funkcję scanf liczby, do sprawdzenia czy udało się poprawnie wprowadzić dane. Przytaczam tutaj prosty kod, który jednak ilustruje mój problem. Mianowicie z założenia program powinien przyjąć liczbę całkowitą, jeżeli jednak zostaną wprowadzone jakieś niewłaściwe dane, powinien wyświetlić odpowiedni komunikat i ponownie pobrać dane. Nie rozumiem natomiast dlaczego przy wprowadzeniu litery program zamiast wyświetlić komunikat raz i czekać na ponowne wprowadzenie danych zasypuje terminal niekończącymi się komunikatami :(

#include <stdio.h>
 
int main(){
 
int n;
 
while( scanf("%d", &n) !=1){
 
    printf("\nto nie liczb calkowita");
}
 
return 0;
}
 

Pozostało 580 znaków

2014-12-28 22:37

Ponieważ jeżeli w buforze klawiatury (w uproszczeniu) nie jest liczba to cały bufor zostaje nietknięty.
Dodaj wewnątrz pętli: while(getchar()!='\n') {}


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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