npapak Δημοσ. 14 Νοεμβρίου 2008 Δημοσ. 14 Νοεμβρίου 2008 Θα ηθελα να ρωτησω αν ξερετε αν η scanf επιστρεφει καποια τιμη σε περιπτωση λαθος εισοδου η πεταει κατευθειαν segmentation fault. Ευχαριστω.
Directx Δημοσ. 14 Νοεμβρίου 2008 Δημοσ. 14 Νοεμβρίου 2008 Επιστρέφει 0 ή EOF. Γενικά η scanf θέλει προσοχή στην χρήση της διότι ένα απρόσεκτο %s μπορεί να περάσει τον έλεγχο επιτυχίας της scanf αλλά να έχει κάνει buffer-overflow στο πρόγραμμα σου αν για παράδειγμα η μεταβλητή είναι μικρότερη από το κείμενο που πληκτρολόγησε ο χρήστης (για αυτό πάντα scanf(" %Ns", .. όπου N το μέγεθος του char που έχουμε ορίσει για παράδειγμα..). Γενικά, καλύτερα να παίρνεις την είσοδο με fgets και να την επεξεργάζεσαι με την βοήθεια της sscanf.
npapak Δημοσ. 14 Νοεμβρίου 2008 Μέλος Δημοσ. 14 Νοεμβρίου 2008 0 επιστερφει οταν ειναι σωστη η εισοδος που δοθηκε ενω EOF οταν ειναι λαθοσ να φανταστω. Απλα ρωταω γιατι σε μια ασκηση που εχω να κανεω λεει οτι θα διαβαζω intergers αλλα σε περιπτωσει που διαβασω καποιο string τοτε να περνει τιμεσ απο ενα πινακα αναλογα με το τι διαβασε. Απλα πρεπει να βρω ενα τροπο να το ελεγχω.
Directx Δημοσ. 15 Νοεμβρίου 2008 Δημοσ. 15 Νοεμβρίου 2008 0 επιστερφει οταν ειναι σωστη η εισοδος που δοθηκε ενω EOF οταν ειναι λαθοσ να φανταστω. Απλα ρωταω γιατι σε μια ασκηση που εχω να κανεω λεει οτι θα διαβαζω intergers αλλα σε περιπτωσει που διαβασω καποιο string τοτε να περνει τιμεσ απο ενα πινακα αναλογα με το τι διαβασε. Απλα πρεπει να βρω ενα τροπο να το ελεγχω. Η scanf επιστρέφει τον αριθμό των αναγνωσμένων πεδίων, έτσι αν έχουμε "%d %d" θα επιστρέψει 2 αν ο χρήστης εισάγει και στα δυο νόμιμες τιμές, διαφορετικά 1 αν εισάγει μια νόμιμη τιμή σε αυτό ή 0 αν δεν δώσει καμία νόμιμη τιμή. EOF επιστρέφει αν δοκιμάσει να διαβάσεις τέλος string.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.