>> SPEAKER 1: Ni skribi programon kiu stimulanta la uzanto por la nomoj kaj
domoj de tri studentoj.
Sed anstataŭ ĝuste presi siajn nomoj kaj domoj por la ekrano, ni
anstataŭ krom tio, ke informoj al disko.
Alivorte, ni kreas, diru, CSV dosiero, por komo disigitaj valoroj,
kio estas efektive nur teksta dosiero programoj kiel Excel aŭ Nombroj
povas malfermi, kaj efike helpos tiujn nomoj kaj domoj konstante por ke
ni povas revizii ilin poste.
>> Por tion fari, ni unue rigardu iuj boilerplate kodo kiun mi havas
komenciĝis kun jam.
Rimarku unue, ke inter la titolaj supren supro estas nun norma lib.h kio
okazas al havi kelkaj funkcioj rilataj al dosiero / Aŭ, dosiero enigo kaj eligo.
Rimarku, ke mi ankaŭ deklaris konstanta nomata Lernantoj -
en la tuta kaskedoj - kies valoro Estas malfacile coded kiel tri.
Rimarku nun ke interne de mia ĉefa programon, mi deklarante tabelo de
grandeco tri uzante tiu konstanto nomata Studentoj ĉiu el kies membroj estas de
tajpi studentoj.
>> Memoras nun ke studento ni difini kiel havanta nomon kaj domon ambaŭ
kio estas kordoj kiel por tiu deklaro instruas, skalara h.
Nun reen en structs1.c, rimarki, ke mi esti unu por buklo tie ke tuj
persisti de nulo ĝis tri.
Ĝi okazas suflori mi por unu studento nomo kaj iu studento domo
denove kaj denove kaj denove.
>> Tiam ĉe la malsupro de tiu programo, rimarki, ke mi havas alian por buklo
ke tuj liberigi la Ith studento nomo kaj la Ith studenta domo en
simile konstruitaj buklo.
Por esti certa, ni povus kombini tiujn masxojn en nur unu, sed mi volis
havi iom da distingaj partoj de la kodo pro diskuto cxi tie.
>> Nun en inter tiujn por masxojn, ni fakte havas alian, kaj tio onia
celo en la vivo estas reale savi ĉiujn de tiuj nomoj kaj domoj, kiuj estas
Nuntempe en RAM disko en la formo de komo disigitaj valoroj.
Por tion fari, ni tuj uzi tri novaj funkcioj -
F malferma, F printf, kaj F apude, kio malfermi dosieron, presi al dosiero, kaj
fermi dosieron.
Ni povas uzi ilin kiel sekvas.
>> ARKIVO, en ĉiuj ĉapojn, kiuj estas iom pri vidindaĵo en C, DOSIERO gets fopen
citaĵo unquote kaj nun nomon por la fajliloj, diru, students.CSV, sed mi povis
nomas ĝin plej ion, komo, kaj nun mi estas tuj specifi sola w interne
de citiloj.
W, kiel vi eble jam divenis jam, signifas ke fopen devus malfermi ĉi dosieron
vokis Students.CSV por skribi tiom ke ni vere povas ŝpari iom da
enhavoj al ĝi.
>> Ni sekvanta ĉekon se dosieron estas ne egala al nula.
Ĉar se ĝi estas, iu havas probable iris malbone tiaokaze ni
ne devus procedi por provi presi ion al ŝi.
Sed se ĝi ne estas nulaj, do ene de la krispa krampoj Mi iras ankaŭ persisti
de i egalas 0 sur supren al studentoj, kaj mi tuj
pliigo i sur ĉiu ripeto.
Kaj ene de tiu ciklo, mi tuj fprintf tiel kiel presi al dosiero -
specife la Mi jam malfermis -
ŝnureto kiu similas tiun% s,% s backslash n fermi citaĵo.
>> Kaj nun mi volas konekti al ĉiu el tiuj anstataŭiloj la efektiva valoroj
de iu studento nomon kaj regxan domon uzante la skalara operatoro.
Studentoj krampo i.name, studentoj krampo i.house proksime paren
duon-dupunkto.
Nun sub tiu buklo, mi simple irante voki fclose de dosiero en ordon
por fine fermi la dosieron.
>> Nun kiam mi kuros ĉi programo, mi ne devus reale vidi nenion pri la
ekrano, sed mi devus havi post kurante tiun programon dosieron nomatan
Students.CSV en la sama dosierujo ke Mi kuros la komandon en kiuj devus
enhavi apartigita de komoj listo de valoroj.
Ni rigardu.
>> Faru structs 1. / Structs1 studento enoficigi, diru al David,
Li devos vivi en Mather.
Studenta nomon, diru, Lauren, ŝi faros vivi en Leverett.
Studenta nomon, diru, Rob, Li devos vivi en Kirkland.
Nun, denove, kiel atendis, nenio aperas esti okazinta, sed permesu al mi
iru antaŭen je la komando prompto kaj tipon g redaktu students.CSV en esperojn ke
ke dosiero ja ekzistas.
>> Gedit students.CSV ENTER, kaj ja, rimarki, ke dosiero enhavanta pure
teksto, sed teksto apartigitaj per komoj por ĉiu kampo, ja ekzistas.
Kaj se ni uzis, ne la CS50 aparato, sed pli familiara Mac aŭ
PC, ĝi rezultas ke ni povus ja malfermu ĉi CSV-dosiero kun pli
familiara programo kiel Excel aŭ Numeroj.