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.