yolobot Δημοσ. 11 Φεβρουαρίου 2015 Δημοσ. 11 Φεβρουαρίου 2015 εχω μια scanf πως ελεγχω οτι αυτο που θα δωσει ο χρηστης ειναι σωστο?πχ του λεω δωσε αριθμο και αυτος μου βαλει ενα γραμμα εναν δεκαδικο η οτιδηποτε πως θα το αποτρεψω αυτο?
lion2486 Δημοσ. 12 Φεβρουαρίου 2015 Δημοσ. 12 Φεβρουαρίου 2015 έλεγχος ορθότητας εισόδου.. Για να το πιάσεις πιο εύκολα χρησιμοποίησε την fgetc(); κάπως έτσι: do{ //read number c = fgetc(); }while( !( c >= '0' && c <= '9' ) ); Όλοι οι χαρακτήρες είναι νούμερα, οπότε ο χαρακτήρας '1' αποτιμάται στο νούμερο ASCII με τα ' που βάζουμε.
migf1 Δημοσ. 12 Φεβρουαρίου 2015 Δημοσ. 12 Φεβρουαρίου 2015 εχω μια scanf πως ελεγχω οτι αυτο που θα δωσει ο χρηστης ειναι σωστο?πχ του λεω δωσε αριθμο και αυτος μου βαλει ενα γραμμα εναν δεκαδικο η οτιδηποτε πως θα το αποτρεψω αυτο? Πλήρη έλεγχο με την scanf() δεν μπορείς να έχεις. Μπορείς όμως να ελέγξεις την τιμή επιστροφή της scanf() κι αν δεν ισούται με το πλήθος των μεταβλητών που της έχεις πει να διαβάσει, τότε κάτι πήγε στραβά. #include <stdio.h> int main( void ) { int n = 0; if ( 1 != scanf("%d", &n) ) { puts( "bad input" ); } else { printf( "You entered: %d\n", n ); } return 0; } Το παραπάνω θα βγάλει "bad input" αν δώσεις για είσοδο γράμμα, αλλά δεν θα "παραπονεθεί" αν δώσεις για είσοδο έναν float... π.χ. αν δώσεις 1.2, θα εκλάβει το n ως 1 (και θα αφήσει το .2 στην stdin για την επόμενη είσοδο). Αν θες να έχεις πλήρη δυνατότητα ελέγχου της εισόδου, τότε είναι καλύτερα να χρησιμοποιείς τις strtoX() συναρτήσεις. Π.χ. την strtol() για int, strtof() για float, και πάει λέγοντας. 3
yolobot Δημοσ. 12 Φεβρουαρίου 2015 Μέλος Δημοσ. 12 Φεβρουαρίου 2015 ευχαριστω πολυ ξερετε που θα βρω καλες σημειωσεις η κανα βιβλιο free απο internet να κατσω να μαθω περισσοτερα πραγματα?
migf1 Δημοσ. 12 Φεβρουαρίου 2015 Δημοσ. 12 Φεβρουαρίου 2015 Free δεν ξέρω, αλλά ένα πολύ καλό εισαγωγικό βιβλίο για ISO C (τόσο για C89 όσο και για C99) είναι αυτό εδώ.
H_ANARXIA_EINAI_PSEMA Δημοσ. 13 Φεβρουαρίου 2015 Δημοσ. 13 Φεβρουαρίου 2015 Πλήρη έλεγχο με την scanf() δεν μπορείς να έχεις. #include <stdio.h> int main(void) { int d, n; if(scanf("%d%*[^0-9 \n]%n", &d, &n) == EOF ||!! n /-1!=!1) printf("Yer input smellz\n"); else printf("%d\n", d); return 0; }
migf1 Δημοσ. 13 Φεβρουαρίου 2015 Δημοσ. 13 Φεβρουαρίου 2015 You must be joking! (συν ότι αυτό που έδωσες δεν πάει ποτέ στο else).
H_ANARXIA_EINAI_PSEMA Δημοσ. 13 Φεβρουαρίου 2015 Δημοσ. 13 Φεβρουαρίου 2015 Το πείραξα και χάλασε... πάντως δούλευε. Φυσικά και είναι joke...
migf1 Δημοσ. 13 Φεβρουαρίου 2015 Δημοσ. 13 Φεβρουαρίου 2015 Το πείραξα και χάλασε... πάντως δούλευε. Φυσικά και είναι joke...
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα