>> SPEAKER 1: Mari kita menulis program yang menggesa pengguna untuk nama-nama dan
rumah daripada tiga pelajar.
Tetapi bukan hanya mencetak mereka nama dan rumah-rumah dengan skrin, mari kita
sebaliknya menyimpan maklumat yang ke cakera.
Dalam erti kata lain, mari buat, katakan, CSV fail, koma nilai dipisahkan,
yang sebenarnya hanya satu fail teks yang program-program seperti Excel atau Nombor
boleh membuka, dan berkesan menyelamatkan orang-orang nama dan rumah-rumah secara kekal supaya
kita boleh pun kemudian.
>> Untuk berbuat demikian, mari kita pertama lihat beberapa kod boilerplate yang saya telah
bermula dengan sudah.
Notis pertama yang antara header sehingga atas kini lib.h standard yang
kebetulan mempunyai beberapa fungsi yang berkaitan untuk memfailkan I / O, input fail dan output.
Perhatikan bahawa saya juga telah diisytiharkan pemalar yang dipanggil PELAJAR -
dalam semua topi - yang nilai adalah keras dikodkan sebagai tiga.
Perhatikan sekarang bahawa dalam utama saya program, saya mengisytiharkan pelbagai
saiz tiga menggunakan berterusan yang dipanggil PELAJAR setiap ahli yang adalah
menaip pelajar.
>> Ingat sekarang bahawa pelajar kami akan menentukan sebagai mempunyai nama dan rumah kedua-dua
yang tali seperti ini akuan mengarahkan, dot h.
Kini kembali structs1.c, notis bahawa saya telah untuk gelung di sini bahawa akan
melelar dari sifar sehingga tiga.
Ia akan mendorong saya untuk pelajar nama dan rumah pelajar
lagi dan lagi dan lagi.
>> Kemudian di bahagian bawah program ini, melihat bahawa saya mempunyai satu lagi bagi gelung
yang akan membebaskan pelajar ke-i ini nama dan rumah pelajar ke-i ini dalam
juga dibina gelung.
Yang pasti, kami boleh menggabungkan mereka gelung ke dalam hanya satu, tetapi saya mahu
mempunyai beberapa segmen yang berbeza kod demi perbincangan di sini.
>> Sekarang di antara mereka untuk gelung, mari kita sebenarnya mempunyai satu lagi, dan ini seseorang
tujuan dalam hidup adalah untuk benar-benar menyimpan semua nama-nama ini dan rumah-rumah yang
kini dalam RAM ke cakera dalam bentuk yang koma nilai dipisahkan.
Untuk berbuat demikian, kita akan menggunakan tiga fungsi baru -
F terbuka, F printf, dan F rapat, yang membuka fail, mencetak kepada fail, dan
menutup fail.
Kita boleh menggunakan mereka seperti berikut.
>> FILE, dalam semua topi, yang merupakan sebahagian dari rasa ingin tahu dalam C, FILE mendapat fopen
unquote quote dan kini nama untuk memfailkan, katakan, students.CSV, tetapi saya boleh
memanggilnya paling apa-apa, koma dan sekarang saya akan menentukan satu w di dalam
petikan berganda.
W, seperti yang anda meneka sudah, bermakna fopen harus membuka fail ini
dipanggil Students.CSV untuk menulis jadi bahawa kita sebenarnya boleh menjimatkan
kandungan kepadanya.
>> Mari kita cek seterusnya jika fail tidak sama dengan nol.
Kerana jika ia adalah, sesuatu yang telah mungkin silapnya di mana kita
tidak perlu meneruskan untuk mencuba untuk mencetak apa-apa kepadanya.
Tetapi jika ia tidak batal, maka bahagian dalam pendakap kerinting saya akan melelar
dari i sama dengan 0 pada sehingga PELAJAR, dan saya akan
kenaikan i pada setiap lelaran.
Dan di dalam gelung ini, saya akan fprintf bagi mencetak ke fail -
khusus yang Saya sudah dibuka -
rentetan yang kelihatan seperti% s ini,% s garis sendeng terbalik n quote dekat.
>> Dan sekarang saya ingin pasangkan kepada setiap mereka ruang letak nilai sebenar
nama pelajar dan rumah menggunakan operator titik.
Pelajar kurungan i.name, pelajar paren kurungan i.house rapat
bertitik.
Sekarang di bawah ini untuk gelung, saya hanya akan memanggil fclose fail untuk
untuk akhirnya menutup fail.
>> Sekarang apabila saya menjalankan program ini, saya tidak perlu benar-benar melihat apa-apa pada yang
skrin, tetapi saya harus mempunyai selepas menjalankan program ini fail yang dipanggil
Students.CSV dalam direktori yang sama yang Saya melaksanakan arahan pada yang perlu
mengandungi koma dipisahkan senarai nilai.
Mari kita melihat.
>> Buat structs 1. / Pelajar structs1 ini menamakan, katakan Daud,
dia akan tinggal di Mather.
Nama pelajar, katakan, Lauren, dia akan tinggal di Leverett.
Nama pelajar, katakan, Rob, dia akan tinggal di Kirkland.
Kini, sekali lagi, seperti yang diharapkan, tiada apa muncul telah berlaku, tetapi biarlah saya
teruskan di command prompt dan jenis g edit students.CSV dengan harapan bahawa
fail yang memang wujud.
>> Gedit students.CSV ENTER, dan sesungguhnya, melihat bahawa fail yang mengandungi semata-mata
teks, tetapi teks yang dipisahkan dengan tanda koma bagi setiap bidang, sesungguhnya wujud.
Dan jika kita telah menggunakan, bukan CS50 perkakas, tetapi Mac yang lebih biasa atau
PC, ternyata bahawa kita boleh sesungguhnya membuka fail CSV ini dengan lebih
program biasa seperti Excel atau Nombor.