Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α18.9 · Δυαδικά αρχεία

Εργαστήριο 10, Άσκηση 2 · Δυσκολία ★★☆ · programming · Κεφάλαια: 18

2.1 Κατασκευάστε το πρόγραμμα bgrades.c, το οποίο να ανοίγει το αρχείο grades.dat για γράψιμο σε δυαδική μορφή. Στη συνέχεια, να διαβάζει ένα όνομα (συμβολοσειρά) από την πρότυπη είσοδο και έναν βαθμό και να τα γράφει στο αρχείο. Το πρόγραμμα να τερματίζει όταν επισημανθεί, με κάποιο τρόπο, το τέλος της εισόδου.

2.2 Στη συνέχεια, επεκτείνετε το πρόγραμμά σας, ώστε να ανοίγει το αρχείο grades.dat για διάβασμα, να διαβάζει τα δεδομένα που έχουν γραφεί σ’ αυτό και να τα προβάλλει στην οθόνη.

Συναρτήσεις για Δυαδική Εισαγωγή/Εξαγωγή:

  1. size_t fread(void *ptr, size_t size, size_t count, FILE *fp): Διαβάζει από το ρεύμα fp το πολύ count δεδομένα μεγέθους size το καθένα και τα αποθηκεύει στη διεύθυνση ptr.
  2. size_t fwrite(const void *ptr, size_t size, size_t count, FILE *fp): Γράφει στο ρεύμα fp το πολύ count δεδομένα μεγέθους size το καθένα, από τη διεύθυνση ptr.

Για να δείτε τα περιεχόμενα του αρχείου grades.dat, αν δουλεύετε σ’ ένα Unix σύστημα, χρησιμοποιήστε την εντολή od -tu1c grades.dat ή hexdump -C grades.dat.

Υπόδειξη

Σε δυαδικό αρχείο δεν υπάρχουν «γραμμές», οπότε το πρόγραμμα που διαβάζει πρέπει να ξέρει ακριβώς πόσα bytes έγραψε αυτό που έγραψε: το πιο απλό είναι μια εγγραφή σταθερού μεγέθους (π.χ. πίνακας χαρακτήρων σταθερού μήκους για το όνομα και ένας αριθμός), που γράφεται και διαβάζεται ολόκληρη. Χρησιμοποιήστε τα modes με b και σταματήστε το διάβασμα όταν η fread επιστρέψει λιγότερα στοιχεία από όσα ζητήσατε.

Αριθμός στον οδηγό: Α18.9 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: lab-lab10-bgrades · Σύνδεσμος: https://progintro.github.io/study/questions/labs/lab-lab10-bgrades.html · Markdown (GitHub)