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.