>> SPEAKER 1: Să scrie un program care solicită utilizatorului pentru numele și
case de trei elevi.
Dar, mai degrabă decât pur și simplu imprima lor nume și case de pe ecran, să
salvați în schimb că informațiile de pe disc.
Cu alte cuvinte, să creeze, să zicem, un CSV fișier, de valori separate prin virgulă,
care este de fapt doar un fișier text care programe cum ar fi Excel sau Numere
poate deschide, și în mod eficient cu excepția celor Numele si case permanent, astfel încât
le putem analiza mai târziu.
>> Pentru a face acest lucru, haideți să aruncăm o privire la un cod șabloane pe care le-am
a început cu deja.
Observați că în primul rând între colectoarele up top este acum lib.h standard, care
se întâmplă să aibă anumite funcții legate de la dosar I / O, de intrare și de ieșire fișier.
Observați că am declarat, de asemenea, o constantă numită elevi -
în toate capace - a căror valoare este greu codificate ca trei.
Observați acum că în interiorul meu principal Programul, am declarând o serie de
mărime trei, folosind ca constant numit Studenți în fiecare a căror membri este de
tip elevi.
>> Amintiți-vă acum că un student vom defini ca având un nume și o casă atât de
care sunt siruri de caractere ca pe acest declarație instruiește, punct de ore.
Acum, înapoi în structs1.c, observați că am au o buclă de aici, care va
repeta de la zero până la trei.
O să-mi cere pentru un student Numele și casa unui elev
din nou și din nou și din nou.
>> Apoi, la partea de jos a acestui program, observa că am un alt pentru buclă
care va elibera studentului i-lea de numele și casa elevului i-lea într-un
construite în mod similar buclă.
Pentru a fi sigur, am putea combina aceste bucle într-una singură, dar am vrut să
au unele segmente distincte de cod de dragul de discuție aici.
>> Acum, în între cele pentru bucle, să de fapt, au un alt, și asta e
scop în viață este de a salva de fapt tot din aceste nume și case care sunt
în prezent în RAM de pe disc, sub forma de valori separate prin virgulă.
Pentru a face acest lucru, vom folosi trei funcții noi -
F deschis, F printf, și F strânsă, care deschide un fișier, de imprimare într-un fișier, și
închide un fișier.
Noi le pot folosi după cum urmează.
>> FILE, în toate capacele, care este oarecum de o curiozitate în C, fisier este fopen
citez, și acum un nume pentru fișier, să zicem, students.CSV, dar am putut
îl numesc cel mai nimic, virgulă și acum eu sunt merge pentru a specifica un singur w interior
de ghilimele duble.
W, așa cum ați ghicit deja, înseamnă că fopen ar trebui să deschidă acest fișier
numit Students.CSV pentru scris astfel care ne poate salva de fapt, unele
conținut la ea.
>> Să următor a verifica dacă fișierul nu este egal cu zero.
Pentru că în cazul în care acesta este, ceva are, probabil, a mers prost, în care caz ne
nu ar trebui să procedeze pentru a încerca pentru a imprima nimic la ea.
Dar dacă nu e nul, apoi în interiorul acolade am de gând să itera
de i este egal cu 0 la până la studenți, și am de gând să
incrementa i pe fiecare iterație.
Și în interiorul această buclă, am de gând să fprintf pentru a tipări într-un fișier -
în mod specific o Deja am deschis -
un șir care arata ca acest% s,% s backslash n citat de aproape.
>> Și acum vreau să conectați la fiecare din aceste substituenți valorile reale
a numelui unui student și o casă folosind operatorul punct.
Elevii suport i.name, studenți paren suport i.house apropiate
semi-colon.
Acum, mai jos de această buclă, eu sunt pur și simplu va suna fclose de fișier în ordine
în cele din urmă pentru a închide fișierul.
>> Acum, când am rula acest program, eu nu ar trebui să a se vedea de fapt nimic pe
ecran, dar eu ar trebui să aibă, după care rulează acest program de un fișier denumit
Students.CSV în același director care Am rula comanda în care ar trebui să
conțin un separate prin virgulă Lista de valori.
Să aruncăm o privire.
>> Asigurați structs 1. / Structs1 student nume, să spunem David,
el va trăi în Mather.
Numele elevului, să zicem, Lauren, ea va trăi în Leverett.
Numele elevului, să zicem, Rob, el va trăi în Kirkland.
Acum, din nou, cum era de așteptat, nu apare nimic să se fi întâmplat, dar permiteți-mi să
merge mai departe, la linia de comandă și de tipul g edita students.CSV în speranța că
ca fișier într-adevăr există.
>> Gedit students.CSV ENTER, și într-adevăr, observă că un fișier care conține pur
text, dar textul separate prin virgule pentru fiecare domeniu, într-adevăr există.
Și dacă am folosit, nu CS50 aparat, dar un Mac mai familiar sau
PC-ul, se pare că am putea, într-adevăr deschide acest fișier CSV cu o mai
program de familiare cum ar fi Excel sau numere.