Αναζήτηση για κλήσεις προς printf ή scanf ( και των σχετικών λειτουργιών ) που έχουν μια προδιαγραφή για τη μορφή κινητής υποδιαστολής . " % f" είναι η πιο πιθανή προδιαγραφές , αλλά μπορεί να έχουν επίσης χρησιμοποιήσει " % e , " " % Ε ", " % g " ή " % G. " Είναι πιθανό ότι υπάρχουν σημαίες , μήκος ή μια προδιαγραφή ακρίβειας , καθώς και . Μια κανονική έκφραση που θα πρέπει να βρείτε όλες τις εμφανίσεις είναι " % . * [ FeEgG ] . " 2
Τροποποιήστε την κλήση της συνάρτησης να ρίχνει ρητά σε τύπο δεδομένων κινητής υποδιαστολής . Ο πιο συνηθισμένος λόγος που δεν θα είναι ήδη διέρχεται μια επιχείρημα floating-point είναι ότι ζητάτε τη λειτουργία printf για να μορφοποιήσετε τα δεδομένα αποθηκεύονται απευθείας σε έναν πίνακα byte . Οι λεπτομέρειες ασφαλή εκτέλεση του καστ θα εξαρτηθεί σε μεγάλο βαθμό από την ειδική εφαρμογή σας . Για λόγους σαφήνειας , μπορεί να θέλετε να μετακινήσετε τη μετατροπή σε floating-point σε μια νέα γραμμή .
Εικόνων 3
Προσθέστε μια αναφορά σε μια μεταβλητή κινητής υποδιαστολής , αν δεν μπορείτε να βρείτε ή να τροποποιήσει μια printf ή scanf κλήση . Αυτό θα αναγκάσει τον compiler να συμπεριλάβει τις απαραίτητες βιβλιοθήκες floating-point . Εάν δεν μπορείτε να εντοπίσετε την υπεύθυνη γραμμή στο δικό σας κώδικα , είναι πιθανό ότι μια βιβλιοθήκη που χρησιμοποιείτε προκαλεί το σφάλμα , και προσθέτοντας μια μεταβλητή κινητής υποδιαστολής είναι η απλούστερη λύση .
Εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα