ΟΜΙΛΗΤΗΣ 1: Ας γράψουμε ένα πρόγραμμα που ζητά από το χρήστη για τα ονόματα και σπίτια των τριών φοιτητών. Αλλά αντί απλά να εκτυπώσετε τους τα ονόματα και τα σπίτια στην οθόνη, ας αντί να αποθηκεύσετε αυτές τις πληροφορίες στο δίσκο. Με άλλα λόγια, ας δημιουργήσουμε, ας πούμε, ένα CSV αρχείο, για τιμές διαχωρισμένες με κόμμα, η οποία είναι στην πραγματικότητα μόνο ένα αρχείο κειμένου που προγράμματα όπως το Excel ή Αριθμοί μπορεί να ανοίξει, και αποτελεσματικά πλην εκείνων τα ονόματα και τα σπίτια μόνιμα, έτσι ώστε μπορούμε να τα ξαναδείτε αργότερα. Για να γίνει αυτό, ας ρίξουμε πρώτα μια ματιά κάποιο κώδικα στερεότυπο που έχω ξεκίνησε με ήδη. Παρατηρήστε ότι η πρώτη από τις κεφαλίδες επάνω στην κορυφή είναι πλέον πρότυπο lib.h που συμβαίνει να έχουν κάποιες λειτουργίες που σχετίζονται στο αρχείο I / O, αρχείο εισόδου και εξόδου. Παρατηρήστε ότι έχω επίσης δηλώσει μια σταθερά που ονομάζεται ΦΟΙΤΗΤΕΣ - σε όλα τα καλύμματα - των οποίων η αξία είναι σκληρό κωδικοποιούνται ως τρεις. Παρατηρήστε τώρα ότι το εσωτερικό των κύριων μου πρόγραμμα, είμαι δηλώνοντας μια σειρά από το μέγεθος των τριών χρησιμοποιώντας αυτό που ονομάζεται σταθερά ΦΟΙΤΗΤΕΣ καθένα από τα μέλη των οποίων είναι πληκτρολογήστε τους μαθητές. Θυμηθείτε τώρα ότι ένας φοιτητής θα ορίσουμε ότι έχει ένα όνομα και ένα σπίτι, τόσο από που είναι χορδές, σύμφωνα με αυτό το δήλωση καθοδηγεί, dot h. Τώρα πίσω στο structs1.c, παρατηρούμε ότι έχουν ένα βρόχο εδώ ότι πρόκειται να επαναλάβει από μηδέν έως τρεις. Είναι πρόκειται να μου ζητήσει ένα μαθητή το όνομα και το σπίτι ενός μαθητή ξανά και ξανά και ξανά. Στη συνέχεια, στο κάτω μέρος αυτού του προγράμματος, παρατηρήσετε ότι έχω άλλο ένα για το βρόχο ότι πρόκειται να απελευθερώσει το μαθητή του i- το όνομα και το σπίτι του φοιτητή i-σε μια παρομοίως κατασκευασμένη βρόχου. Για να είμαστε σίγουροι, θα μπορούσαμε να συνδυάσουμε αυτές τις θηλιές σε μία μόνο, αλλά θα ήθελα να έχουν κάποια διακριτά τμήματα του κώδικα για χάρη της συζήτησης εδώ. Τώρα, ανάμεσα σε εκείνους για τους βρόχους, ας στην πραγματικότητα έχουν ένα άλλο, και αυτό κάποιου σκοπός στη ζωή είναι να σώσει πραγματικά όλα από αυτά τα ονόματα και τα σπίτια που είναι σήμερα RAM στο δίσκο με τη μορφή των τιμών διαχωρισμένων με κόμμα. Για να γίνει αυτό, θα πάμε να χρησιμοποιούν τρεις νέες λειτουργίες - F ανοιχτό, F printf, και F κλείσιμο, το οποίο ανοίξετε ένα αρχείο, εκτύπωση σε αρχείο, και κλείνετε ένα αρχείο. Μπορούμε να τα χρησιμοποιήσουν ως εξής. FILE, σε όλα τα καλύμματα, τα οποία είναι κάπως μια περιέργεια στο C, ΑΡΧΕΙΟ παίρνει fopen quote unquote και τώρα ένα όνομα για το αρχείο, ας πούμε, students.CSV, αλλά θα μπορούσα αποκαλούν πλέον τίποτα, κόμμα και τώρα είμαι πρόκειται να καθοριστεί ένα απλό w εσωτερικό από διπλά εισαγωγικά. W, όπως θα έχετε καταλάβει ήδη, σημαίνει ότι fopen πρέπει να ανοίξει αυτό το αρχείο ονομάζεται Students.CSV για το γράψιμο έτσι ότι μπορούμε να εξοικονομήσουμε πραγματικά κάποια περιεχόμενα σε αυτό. Ας επόμενο έλεγχο, εάν το αρχείο δεν είναι ίση με null. Διότι αν είναι, κάτι που έχει πιθανώς πάει στραβά στην οποία περίπτωση θα δεν θα πρέπει να προχωρήσουμε και να προσπαθήσουμε να εκτυπώσετε τίποτα σε αυτό. Αλλά αν δεν είναι μηδενική, τότε στο εσωτερικό της άγκιστρα Πάω να μετακινηθείτε από i ισούται με 0 για μέχρι ΦΟΙΤΗΤΕΣ, και Πάω να αυξήσετε i σε κάθε επανάληψη. Και μέσα από αυτόν τον βρόχο, εγώ είμαι πρόκειται να fprintf, ώστε να εκτυπώσετε σε ένα αρχείο - συγκεκριμένα το ένα Έχω ήδη ανοίξει - μια σειρά που μοιάζει με αυτό% s,% s backslash n στενή απόσπασμα. Και τώρα θέλω να συνδέσετε σε κάθε ένα από αυτά τα σύμβολα κράτησης θέσης οι πραγματικές τιμές από το όνομα ενός μαθητή και ένα σπίτι χρησιμοποιώντας τον τελεστή τελεία. Οι μαθητές βραχίονα i.name, φοιτητές βραχίονα i.house κοντά paren ερωτηματικό. Τώρα κάτω από αυτό για βρόχο, είμαι απλά πρόκειται να καλέσετε fclose του αρχείου, ώστε για να κλείσει τελικά το αρχείο. Τώρα, όταν τρέχω αυτό το πρόγραμμα, δεν θα πρέπει να πραγματικά να δείτε τίποτα σχετικά με την οθόνη, αλλά πρέπει να έχω μετά την εκτέλεση αυτό το πρόγραμμα ένα αρχείο με όνομα Students.CSV στον ίδιο κατάλογο που Εκτελώ την εντολή για το ότι θα πρέπει να περιέχουν διαχωρισμένες με κόμμα λίστα τιμών. Ας ρίξουμε μια ματιά. Κάντε structs 1. / Φοιτητής του structs1 όνομα, ας πούμε Ντέιβιντ, θα ζήσει σε Mather. Το όνομα του μαθητή, ας πούμε, Lauren, που θα ζουν σε Leverett. Το όνομα του μαθητή, ας πούμε, Rob, θα ζήσει σε Kirkland. Τώρα, και πάλι, όπως αναμενόταν, δεν εμφανίζεται τίποτα να έχει συμβεί, αλλά επιτρέψτε μου να να προχωρήσει στη γραμμή εντολών και πληκτρολογήστε g edit students.CSV με την ελπίδα ότι ότι το αρχείο υπάρχει πράγματι. Gedit students.CSV ENTER, και μάλιστα, παρατηρήσετε ότι ένα αρχείο που περιέχει αποκλειστικά κείμενο, αλλά το κείμενο διαχωρισμένες με κόμμα για κάθε πεδίο, πράγματι υπάρχει. Και αν ήμασταν χρησιμοποιώντας όχι, το CS50 συσκευή, αλλά ένα πιο οικείο ή Mac PC, αποδεικνύεται ότι θα μπορούσαμε πράγματι ανοίξτε το αρχείο CSV με μια πιο γνωστό πρόγραμμα όπως το Excel ή αριθμούς.