xazerty Temat założony przez niniejszego użytkownika |
Sprawdzenie czy wczytano liczbę. » 2015-04-13 22:56:19 Witam. Jaki warunek w języku C mogę użyć, aby sprawdzić, czy wprowadzono poprawnie liczbę do zmiennej. Np. int main() int a, b; scanf( "%d %d", & a, & b );
|
|
pekfos |
» 2015-04-13 23:09:17 Wartość zwracana ze scanf(). |
|
Different |
» 2015-04-13 23:10:00 |
|
xazerty Temat założony przez niniejszego użytkownika |
» 2015-04-13 23:18:27 @pekfos Chodzi o EOF? Jeśli zwróci EOF to znaczy, że prawidłowo wczytano liczbę?(coś w stylu cin.good() z c++?) Dzięki za pomoc :) Edit: Zacząłem program który wczytuje do skutku, aż nie poda się właściwych danych. Mam jednak problem. Zacząłem robić to przez pętlę nieskończoną, ale po wprowadzeniu jakiejś litery zapętla sie w kółko printf("Podaj liczby") i printf("blad wczytywania"). Zaś gdy wpisze się liczbę jest w porządku. Co mogę teraz zrobić :d while( 1 ) { printf( "Podaj liczby" ); k = scanf( "%d %d", & a, & b ); if( k == 2 ) { if( a == b ) { printf( "Liczby sa rowne" ); } else { break; } } else { printf( "blad wczytywania" ); } }
|
|
Brunon3 |
» 2015-04-14 07:12:37 Chodzi o EOF? Jeśli zwróci EOF to znaczy, że prawidłowo wczytano liczbę?(coś w stylu cin.good() z c++?) | http://www.cplusplus.com/reference/cstdio/scanf/On success, the function returns the number of items of the argument list successfully filled. This count can match the expected number of items or be less (even zero) due to a matching failure, a reading error, or the reach of the end-of-file.
If a reading error happens or the end-of-file is reached while reading, the proper indicator is set (feof or ferror). And, if either happens before any data could be successfully read, EOF is returned.
If an encoding error happens interpreting wide characters, the function sets errno to EILSEQ. |
No i zapomniałeś o znacznikach w poście wyżej ([cpp] kod [/cpp]). |
|
xazerty Temat założony przez niniejszego użytkownika |
» 2015-04-14 13:02:18 Problem rozwiązany zapomniałem całkowicie o czyszczeniu bufora, wystarczyło dodać fflush(stdin). Dziękuję wszystkim za pomoc :) |
|
Monika90 |
» 2015-04-14 13:51:27 Co oczywiście ma niezdefiniowane zachowanie. Skąd to wziąłeś? |
|
xazerty Temat założony przez niniejszego użytkownika |
» 2015-04-21 21:17:18 Nie wiem skąd(ale kiedyś to gdzieś widziałem i zacząłem używać od tego czasu), ale zawsze pomaga w programach, gdy wczytuje się kilka zmiennych pod rząd. Z tego co wiem to czyści bufor ;p ostatecznie kod programu wygladał tak:
#include <stdio.h>
int wczytaj( int x, int y ) { return x > y; } int main() { int a, b, k; while( 1 ) { printf( "Podaj liczby" ); k = scanf( "%d %d", & a, & b ); fflush( stdin ); if( k == 2 ) { if( a == b ) { printf( "Liczby sa rowne" ); } else { break; } } else { printf( "blad wczytywania" ); } } if( wczytaj( a, b ) == 1 ) { printf( "pierwsza liczba jest wiêksza od drugiej" ); } else { printf( "druga liczba jest wieksza od pierwszej" ); } }
|
|
« 1 » |