2 00:00:00,000 --> 00:00:02,470 >> ΟΜΙΛΗΤΗΣ 1: Ας γράψουμε ένα πρόγραμμα που ζητά από το χρήστη για τα ονόματα και 3 00:00:02,470 --> 00:00:03,990 σπίτια των τριών φοιτητών. 4 00:00:03,990 --> 00:00:07,300 Αλλά αντί απλά να εκτυπώσετε τους τα ονόματα και τα σπίτια στην οθόνη, ας 5 00:00:07,300 --> 00:00:09,660 αντί να αποθηκεύσετε αυτές τις πληροφορίες στο δίσκο. 6 00:00:09,660 --> 00:00:14,530 Με άλλα λόγια, ας δημιουργήσουμε, ας πούμε, ένα CSV αρχείο, για τιμές διαχωρισμένες με κόμμα, 7 00:00:14,530 --> 00:00:17,720 η οποία είναι στην πραγματικότητα μόνο ένα αρχείο κειμένου που προγράμματα όπως το Excel ή Αριθμοί 8 00:00:17,720 --> 00:00:21,690 μπορεί να ανοίξει, και αποτελεσματικά πλην εκείνων τα ονόματα και τα σπίτια μόνιμα, έτσι ώστε 9 00:00:21,690 --> 00:00:23,220 μπορούμε να τα ξαναδείτε αργότερα. 10 00:00:23,220 --> 00:00:25,960 >> Για να γίνει αυτό, ας ρίξουμε πρώτα μια ματιά κάποιο κώδικα στερεότυπο που έχω 11 00:00:25,960 --> 00:00:27,650 ξεκίνησε με ήδη. 12 00:00:27,650 --> 00:00:32,380 Παρατηρήστε ότι η πρώτη από τις κεφαλίδες επάνω στην κορυφή είναι πλέον πρότυπο lib.h που 13 00:00:32,380 --> 00:00:36,710 συμβαίνει να έχουν κάποιες λειτουργίες που σχετίζονται στο αρχείο I / O, αρχείο εισόδου και εξόδου. 14 00:00:36,710 --> 00:00:39,560 Παρατηρήστε ότι έχω επίσης δηλώσει μια σταθερά που ονομάζεται ΦΟΙΤΗΤΕΣ - 15 00:00:39,560 --> 00:00:42,380 σε όλα τα καλύμματα - των οποίων η αξία είναι σκληρό κωδικοποιούνται ως τρεις. 16 00:00:42,380 --> 00:00:45,820 Παρατηρήστε τώρα ότι το εσωτερικό των κύριων μου πρόγραμμα, είμαι δηλώνοντας μια σειρά από 17 00:00:45,820 --> 00:00:50,270 το μέγεθος των τριών χρησιμοποιώντας αυτό που ονομάζεται σταθερά ΦΟΙΤΗΤΕΣ καθένα από τα μέλη των οποίων είναι 18 00:00:50,270 --> 00:00:51,650 πληκτρολογήστε τους μαθητές. 19 00:00:51,650 --> 00:00:56,150 >> Θυμηθείτε τώρα ότι ένας φοιτητής θα ορίσουμε ότι έχει ένα όνομα και ένα σπίτι, τόσο από 20 00:00:56,150 --> 00:01:00,410 που είναι χορδές, σύμφωνα με αυτό το δήλωση καθοδηγεί, dot h. 21 00:01:00,410 --> 00:01:04,680 Τώρα πίσω στο structs1.c, παρατηρούμε ότι έχουν ένα βρόχο εδώ ότι πρόκειται να 22 00:01:04,680 --> 00:01:06,750 επαναλάβει από μηδέν έως τρεις. 23 00:01:06,750 --> 00:01:10,020 Είναι πρόκειται να μου ζητήσει ένα μαθητή το όνομα και το σπίτι ενός μαθητή 24 00:01:10,020 --> 00:01:12,310 ξανά και ξανά και ξανά. 25 00:01:12,310 --> 00:01:15,620 >> Στη συνέχεια, στο κάτω μέρος αυτού του προγράμματος, παρατηρήσετε ότι έχω άλλο ένα για το βρόχο 26 00:01:15,620 --> 00:01:19,970 ότι πρόκειται να απελευθερώσει το μαθητή του i- το όνομα και το σπίτι του φοιτητή i-σε μια 27 00:01:19,970 --> 00:01:21,570 παρομοίως κατασκευασμένη βρόχου. 28 00:01:21,570 --> 00:01:24,480 Για να είμαστε σίγουροι, θα μπορούσαμε να συνδυάσουμε αυτές τις θηλιές σε μία μόνο, αλλά θα ήθελα να 29 00:01:24,480 --> 00:01:28,180 έχουν κάποια διακριτά τμήματα του κώδικα για χάρη της συζήτησης εδώ. 30 00:01:28,180 --> 00:01:31,920 >> Τώρα, ανάμεσα σε εκείνους για τους βρόχους, ας στην πραγματικότητα έχουν ένα άλλο, και αυτό κάποιου 31 00:01:31,920 --> 00:01:35,210 σκοπός στη ζωή είναι να σώσει πραγματικά όλα από αυτά τα ονόματα και τα σπίτια που είναι 32 00:01:35,210 --> 00:01:39,810 σήμερα RAM στο δίσκο με τη μορφή των τιμών διαχωρισμένων με κόμμα. 33 00:01:39,810 --> 00:01:42,080 Για να γίνει αυτό, θα πάμε να χρησιμοποιούν τρεις νέες λειτουργίες - 34 00:01:42,080 --> 00:01:47,450 F ανοιχτό, F printf, και F κλείσιμο, το οποίο ανοίξετε ένα αρχείο, εκτύπωση σε αρχείο, και 35 00:01:47,450 --> 00:01:48,440 κλείνετε ένα αρχείο. 36 00:01:48,440 --> 00:01:49,690 Μπορούμε να τα χρησιμοποιήσουν ως εξής. 37 00:01:49,690 --> 00:01:52,110 38 00:01:52,110 --> 00:01:58,240 >> FILE, σε όλα τα καλύμματα, τα οποία είναι κάπως μια περιέργεια στο C, ΑΡΧΕΙΟ παίρνει fopen 39 00:01:58,240 --> 00:02:03,020 quote unquote και τώρα ένα όνομα για το αρχείο, ας πούμε, students.CSV, αλλά θα μπορούσα 40 00:02:03,020 --> 00:02:08,150 αποκαλούν πλέον τίποτα, κόμμα και τώρα είμαι πρόκειται να καθοριστεί ένα απλό w εσωτερικό 41 00:02:08,150 --> 00:02:09,390 από διπλά εισαγωγικά. 42 00:02:09,390 --> 00:02:13,290 W, όπως θα έχετε καταλάβει ήδη, σημαίνει ότι fopen πρέπει να ανοίξει αυτό το αρχείο 43 00:02:13,290 --> 00:02:17,360 ονομάζεται Students.CSV για το γράψιμο έτσι ότι μπορούμε να εξοικονομήσουμε πραγματικά κάποια 44 00:02:17,360 --> 00:02:19,370 περιεχόμενα σε αυτό. 45 00:02:19,370 --> 00:02:23,080 >> Ας επόμενο έλεγχο, εάν το αρχείο δεν είναι ίση με null. 46 00:02:23,080 --> 00:02:25,860 Διότι αν είναι, κάτι που έχει πιθανώς πάει στραβά στην οποία περίπτωση θα 47 00:02:25,860 --> 00:02:28,340 δεν θα πρέπει να προχωρήσουμε και να προσπαθήσουμε να εκτυπώσετε τίποτα σε αυτό. 48 00:02:28,340 --> 00:02:33,400 Αλλά αν δεν είναι μηδενική, τότε στο εσωτερικό της άγκιστρα Πάω να μετακινηθείτε 49 00:02:33,400 --> 00:02:38,030 από i ισούται με 0 για μέχρι ΦΟΙΤΗΤΕΣ, και Πάω να 50 00:02:38,030 --> 00:02:40,180 αυξήσετε i σε κάθε επανάληψη. 51 00:02:40,180 --> 00:02:45,750 Και μέσα από αυτόν τον βρόχο, εγώ είμαι πρόκειται να fprintf, ώστε να εκτυπώσετε σε ένα αρχείο - 52 00:02:45,750 --> 00:02:47,940 συγκεκριμένα το ένα Έχω ήδη ανοίξει - 53 00:02:47,940 --> 00:02:54,650 μια σειρά που μοιάζει με αυτό% s,% s backslash n στενή απόσπασμα. 54 00:02:54,650 --> 00:02:58,790 >> Και τώρα θέλω να συνδέσετε σε κάθε ένα από αυτά τα σύμβολα κράτησης θέσης οι πραγματικές τιμές 55 00:02:58,790 --> 00:03:03,390 από το όνομα ενός μαθητή και ένα σπίτι χρησιμοποιώντας τον τελεστή τελεία. 56 00:03:03,390 --> 00:03:10,030 Οι μαθητές βραχίονα i.name, φοιτητές βραχίονα i.house κοντά paren 57 00:03:10,030 --> 00:03:11,230 ερωτηματικό. 58 00:03:11,230 --> 00:03:16,180 Τώρα κάτω από αυτό για βρόχο, είμαι απλά πρόκειται να καλέσετε fclose του αρχείου, ώστε 59 00:03:16,180 --> 00:03:18,520 για να κλείσει τελικά το αρχείο. 60 00:03:18,520 --> 00:03:21,360 >> Τώρα, όταν τρέχω αυτό το πρόγραμμα, δεν θα πρέπει να πραγματικά να δείτε τίποτα σχετικά με την 61 00:03:21,360 --> 00:03:25,010 οθόνη, αλλά πρέπει να έχω μετά την εκτέλεση αυτό το πρόγραμμα ένα αρχείο με όνομα 62 00:03:25,010 --> 00:03:29,130 Students.CSV στον ίδιο κατάλογο που Εκτελώ την εντολή για το ότι θα πρέπει να 63 00:03:29,130 --> 00:03:32,480 περιέχουν διαχωρισμένες με κόμμα λίστα τιμών. 64 00:03:32,480 --> 00:03:34,790 Ας ρίξουμε μια ματιά. 65 00:03:34,790 --> 00:03:41,690 >> Κάντε structs 1. / Φοιτητής του structs1 όνομα, ας πούμε Ντέιβιντ, 66 00:03:41,690 --> 00:03:43,140 θα ζήσει σε Mather. 67 00:03:43,140 --> 00:03:46,890 Το όνομα του μαθητή, ας πούμε, Lauren, που θα ζουν σε Leverett. 68 00:03:46,890 --> 00:03:50,800 Το όνομα του μαθητή, ας πούμε, Rob, θα ζήσει σε Kirkland. 69 00:03:50,800 --> 00:03:54,050 Τώρα, και πάλι, όπως αναμενόταν, δεν εμφανίζεται τίποτα να έχει συμβεί, αλλά επιτρέψτε μου να 70 00:03:54,050 --> 00:03:58,790 να προχωρήσει στη γραμμή εντολών και πληκτρολογήστε g edit students.CSV με την ελπίδα ότι 71 00:03:58,790 --> 00:04:00,850 ότι το αρχείο υπάρχει πράγματι. 72 00:04:00,850 --> 00:04:07,010 >> Gedit students.CSV ENTER, και μάλιστα, παρατηρήσετε ότι ένα αρχείο που περιέχει αποκλειστικά 73 00:04:07,010 --> 00:04:11,320 κείμενο, αλλά το κείμενο διαχωρισμένες με κόμμα για κάθε πεδίο, πράγματι υπάρχει. 74 00:04:11,320 --> 00:04:14,530 Και αν ήμασταν χρησιμοποιώντας όχι, το CS50 συσκευή, αλλά ένα πιο οικείο ή Mac 75 00:04:14,530 --> 00:04:18,080 PC, αποδεικνύεται ότι θα μπορούσαμε πράγματι ανοίξτε το αρχείο CSV με μια πιο 76 00:04:18,080 --> 00:04:20,400 γνωστό πρόγραμμα όπως το Excel ή αριθμούς. 77 00:04:20,400 --> 00:04:22,906