Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

εχω μια scanf  πως ελεγχω οτι αυτο που θα δωσει ο χρηστης ειναι σωστο?πχ του λεω  δωσε αριθμο και αυτος μου βαλει ενα γραμμα εναν δεκαδικο η οτιδηποτε  πως θα το αποτρεψω αυτο?

Δημοσ.

έλεγχος ορθότητας εισόδου..

Για να το πιάσεις πιο εύκολα χρησιμοποίησε την fgetc();

 

κάπως έτσι:

do{
   //read number
   c = fgetc();
}while( !( c >= '0' && c <= '9' ) );

Όλοι οι χαρακτήρες είναι νούμερα, οπότε ο χαρακτήρας '1' αποτιμάται στο νούμερο ASCII με τα ' που βάζουμε.

Δημοσ.

εχω μια 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, και πάει λέγοντας.

  • Like 3
Δημοσ.

ευχαριστω πολυ :-) ξερετε που θα βρω καλες σημειωσεις η κανα βιβλιο free απο internet να  κατσω να μαθω περισσοτερα πραγματα?

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...