2 00:00:00,000 --> 00:00:02,470 >> SPEAKER 1: Mari kita menulis program yang menggesa pengguna untuk nama-nama dan 3 00:00:02,470 --> 00:00:03,990 rumah daripada tiga pelajar. 4 00:00:03,990 --> 00:00:07,300 Tetapi bukan hanya mencetak mereka nama dan rumah-rumah dengan skrin, mari kita 5 00:00:07,300 --> 00:00:09,660 sebaliknya menyimpan maklumat yang ke cakera. 6 00:00:09,660 --> 00:00:14,530 Dalam erti kata lain, mari buat, katakan, CSV fail, koma nilai dipisahkan, 7 00:00:14,530 --> 00:00:17,720 yang sebenarnya hanya satu fail teks yang program-program seperti Excel atau Nombor 8 00:00:17,720 --> 00:00:21,690 boleh membuka, dan berkesan menyelamatkan orang-orang nama dan rumah-rumah secara kekal supaya 9 00:00:21,690 --> 00:00:23,220 kita boleh pun kemudian. 10 00:00:23,220 --> 00:00:25,960 >> Untuk berbuat demikian, mari kita pertama lihat beberapa kod boilerplate yang saya telah 11 00:00:25,960 --> 00:00:27,650 bermula dengan sudah. 12 00:00:27,650 --> 00:00:32,380 Notis pertama yang antara header sehingga atas kini lib.h standard yang 13 00:00:32,380 --> 00:00:36,710 kebetulan mempunyai beberapa fungsi yang berkaitan untuk memfailkan I / O, input fail dan output. 14 00:00:36,710 --> 00:00:39,560 Perhatikan bahawa saya juga telah diisytiharkan pemalar yang dipanggil PELAJAR - 15 00:00:39,560 --> 00:00:42,380 dalam semua topi - yang nilai adalah keras dikodkan sebagai tiga. 16 00:00:42,380 --> 00:00:45,820 Perhatikan sekarang bahawa dalam utama saya program, saya mengisytiharkan pelbagai 17 00:00:45,820 --> 00:00:50,270 saiz tiga menggunakan berterusan yang dipanggil PELAJAR setiap ahli yang adalah 18 00:00:50,270 --> 00:00:51,650 menaip pelajar. 19 00:00:51,650 --> 00:00:56,150 >> Ingat sekarang bahawa pelajar kami akan menentukan sebagai mempunyai nama dan rumah kedua-dua 20 00:00:56,150 --> 00:01:00,410 yang tali seperti ini akuan mengarahkan, dot h. 21 00:01:00,410 --> 00:01:04,680 Kini kembali structs1.c, notis bahawa saya telah untuk gelung di sini bahawa akan 22 00:01:04,680 --> 00:01:06,750 melelar dari sifar sehingga tiga. 23 00:01:06,750 --> 00:01:10,020 Ia akan mendorong saya untuk pelajar nama dan rumah pelajar 24 00:01:10,020 --> 00:01:12,310 lagi dan lagi dan lagi. 25 00:01:12,310 --> 00:01:15,620 >> Kemudian di bahagian bawah program ini, melihat bahawa saya mempunyai satu lagi bagi gelung 26 00:01:15,620 --> 00:01:19,970 yang akan membebaskan pelajar ke-i ini nama dan rumah pelajar ke-i ini dalam 27 00:01:19,970 --> 00:01:21,570 juga dibina gelung. 28 00:01:21,570 --> 00:01:24,480 Yang pasti, kami boleh menggabungkan mereka gelung ke dalam hanya satu, tetapi saya mahu 29 00:01:24,480 --> 00:01:28,180 mempunyai beberapa segmen yang berbeza kod demi perbincangan di sini. 30 00:01:28,180 --> 00:01:31,920 >> Sekarang di antara mereka untuk gelung, mari kita sebenarnya mempunyai satu lagi, dan ini seseorang 31 00:01:31,920 --> 00:01:35,210 tujuan dalam hidup adalah untuk benar-benar menyimpan semua nama-nama ini dan rumah-rumah yang 32 00:01:35,210 --> 00:01:39,810 kini dalam RAM ke cakera dalam bentuk yang koma nilai dipisahkan. 33 00:01:39,810 --> 00:01:42,080 Untuk berbuat demikian, kita akan menggunakan tiga fungsi baru - 34 00:01:42,080 --> 00:01:47,450 F terbuka, F printf, dan F rapat, yang membuka fail, mencetak kepada fail, dan 35 00:01:47,450 --> 00:01:48,440 menutup fail. 36 00:01:48,440 --> 00:01:49,690 Kita boleh menggunakan mereka seperti berikut. 37 00:01:49,690 --> 00:01:52,110 38 00:01:52,110 --> 00:01:58,240 >> FILE, dalam semua topi, yang merupakan sebahagian dari rasa ingin tahu dalam C, FILE mendapat fopen 39 00:01:58,240 --> 00:02:03,020 unquote quote dan kini nama untuk memfailkan, katakan, students.CSV, tetapi saya boleh 40 00:02:03,020 --> 00:02:08,150 memanggilnya paling apa-apa, koma dan sekarang saya akan menentukan satu w di dalam 41 00:02:08,150 --> 00:02:09,390 petikan berganda. 42 00:02:09,390 --> 00:02:13,290 W, seperti yang anda meneka sudah, bermakna fopen harus membuka fail ini 43 00:02:13,290 --> 00:02:17,360 dipanggil Students.CSV untuk menulis jadi bahawa kita sebenarnya boleh menjimatkan 44 00:02:17,360 --> 00:02:19,370 kandungan kepadanya. 45 00:02:19,370 --> 00:02:23,080 >> Mari kita cek seterusnya jika fail tidak sama dengan nol. 46 00:02:23,080 --> 00:02:25,860 Kerana jika ia adalah, sesuatu yang telah mungkin silapnya di mana kita 47 00:02:25,860 --> 00:02:28,340 tidak perlu meneruskan untuk mencuba untuk mencetak apa-apa kepadanya. 48 00:02:28,340 --> 00:02:33,400 Tetapi jika ia tidak batal, maka bahagian dalam pendakap kerinting saya akan melelar 49 00:02:33,400 --> 00:02:38,030 dari i sama dengan 0 pada sehingga PELAJAR, dan saya akan 50 00:02:38,030 --> 00:02:40,180 kenaikan i pada setiap lelaran. 51 00:02:40,180 --> 00:02:45,750 Dan di dalam gelung ini, saya akan fprintf bagi mencetak ke fail - 52 00:02:45,750 --> 00:02:47,940 khusus yang Saya sudah dibuka - 53 00:02:47,940 --> 00:02:54,650 rentetan yang kelihatan seperti% s ini,% s garis sendeng terbalik n quote dekat. 54 00:02:54,650 --> 00:02:58,790 >> Dan sekarang saya ingin pasangkan kepada setiap mereka ruang letak nilai sebenar 55 00:02:58,790 --> 00:03:03,390 nama pelajar dan rumah menggunakan operator titik. 56 00:03:03,390 --> 00:03:10,030 Pelajar kurungan i.name, pelajar paren kurungan i.house rapat 57 00:03:10,030 --> 00:03:11,230 bertitik. 58 00:03:11,230 --> 00:03:16,180 Sekarang di bawah ini untuk gelung, saya hanya akan memanggil fclose fail untuk 59 00:03:16,180 --> 00:03:18,520 untuk akhirnya menutup fail. 60 00:03:18,520 --> 00:03:21,360 >> Sekarang apabila saya menjalankan program ini, saya tidak perlu benar-benar melihat apa-apa pada yang 61 00:03:21,360 --> 00:03:25,010 skrin, tetapi saya harus mempunyai selepas menjalankan program ini fail yang dipanggil 62 00:03:25,010 --> 00:03:29,130 Students.CSV dalam direktori yang sama yang Saya melaksanakan arahan pada yang perlu 63 00:03:29,130 --> 00:03:32,480 mengandungi koma dipisahkan senarai nilai. 64 00:03:32,480 --> 00:03:34,790 Mari kita melihat. 65 00:03:34,790 --> 00:03:41,690 >> Buat structs 1. / Pelajar structs1 ini menamakan, katakan Daud, 66 00:03:41,690 --> 00:03:43,140 dia akan tinggal di Mather. 67 00:03:43,140 --> 00:03:46,890 Nama pelajar, katakan, Lauren, dia akan tinggal di Leverett. 68 00:03:46,890 --> 00:03:50,800 Nama pelajar, katakan, Rob, dia akan tinggal di Kirkland. 69 00:03:50,800 --> 00:03:54,050 Kini, sekali lagi, seperti yang diharapkan, tiada apa muncul telah berlaku, tetapi biarlah saya 70 00:03:54,050 --> 00:03:58,790 teruskan di command prompt dan jenis g edit students.CSV dengan harapan bahawa 71 00:03:58,790 --> 00:04:00,850 fail yang memang wujud. 72 00:04:00,850 --> 00:04:07,010 >> Gedit students.CSV ENTER, dan sesungguhnya, melihat bahawa fail yang mengandungi semata-mata 73 00:04:07,010 --> 00:04:11,320 teks, tetapi teks yang dipisahkan dengan tanda koma bagi setiap bidang, sesungguhnya wujud. 74 00:04:11,320 --> 00:04:14,530 Dan jika kita telah menggunakan, bukan CS50 perkakas, tetapi Mac yang lebih biasa atau 75 00:04:14,530 --> 00:04:18,080 PC, ternyata bahawa kita boleh sesungguhnya membuka fail CSV ini dengan lebih 76 00:04:18,080 --> 00:04:20,400 program biasa seperti Excel atau Nombor. 77 00:04:20,400 --> 00:04:22,906