2 00:00:00,000 --> 00:00:02,470 >> ALTAVEU 1: Anem a escriure un programa que sol · licita a l'usuari els noms i 3 00:00:02,470 --> 00:00:03,990 cases de tres estudiants. 4 00:00:03,990 --> 00:00:07,300 Però en lloc de només imprimir el seu noms i cases a la pantalla, anem a 5 00:00:07,300 --> 00:00:09,660 en lloc guardar aquesta informació en el disc. 6 00:00:09,660 --> 00:00:14,530 En altres paraules, crearem, per exemple, un fitxer CSV arxiu, per als valors separats per comes, 7 00:00:14,530 --> 00:00:17,720 que en realitat és només un arxiu de text que programes com Excel o números 8 00:00:17,720 --> 00:00:21,690 pot obrir, i efectivament salvar els noms i les cases de forma permanent perquè 9 00:00:21,690 --> 00:00:23,220 podem revisar més tard. 10 00:00:23,220 --> 00:00:25,960 >> Per a això, primer anem a fer una ullada a algun codi repetitiu que tinc 11 00:00:25,960 --> 00:00:27,650 començat amb ja. 12 00:00:27,650 --> 00:00:32,380 Noti primer que entre les capçaleres sobre de la tapa és ara lib.h norma que 13 00:00:32,380 --> 00:00:36,710 passa a tenir algunes funcions relacionades per presentar d'E / S, entrada i sortida d'arxius. 14 00:00:36,710 --> 00:00:39,560 Fixa't que jo també he declarat una constant anomenada ESTUDIANTS - 15 00:00:39,560 --> 00:00:42,380 en totes les tapes - el valor es codifica dur com tres. 16 00:00:42,380 --> 00:00:45,820 Noti ara que dins del meu principal programa, estic declarant un arranjament de 17 00:00:45,820 --> 00:00:50,270 La mida de tres usant que constant anomenada ESTUDIANTS cada un dels membres és de 18 00:00:50,270 --> 00:00:51,650 escrigui els estudiants. 19 00:00:51,650 --> 00:00:56,150 >> Recordem ara que un estudiant que definirà com tenir un nom i una casa de dues 20 00:00:56,150 --> 00:01:00,410 que són cadenes com per aquesta Declaració es donen instruccions, punt h. 21 00:01:00,410 --> 00:01:04,680 Ara, de tornada a structs1.c, observi que han un bucle aquí que va a 22 00:01:04,680 --> 00:01:06,750 iterar des de zero fins a tres. 23 00:01:06,750 --> 00:01:10,020 Es demanarà confirmació en un estudiant de nom i la casa d'un estudiant 24 00:01:10,020 --> 00:01:12,310 una i altra vegada i una altra. 25 00:01:12,310 --> 00:01:15,620 >> Després en la part inferior d'aquest programa, adonar que tinc un altre bucle for 26 00:01:15,620 --> 00:01:19,970 això va a alliberar de l'estudiant ITH nom i la casa de l'estudiant i en un 27 00:01:19,970 --> 00:01:21,570 construït de manera similar bucle. 28 00:01:21,570 --> 00:01:24,480 Per estar segurs, podem combinar aquests bucles en un de sol, però jo volia 29 00:01:24,480 --> 00:01:28,180 tenir alguns segments diferents de codi pel bé de la discussió aquí. 30 00:01:28,180 --> 00:01:31,920 >> Ara entre els bucles for, anem a en realitat tenen els altres, i d'aquest 31 00:01:31,920 --> 00:01:35,210 propòsit en la vida és salvar tota la realitat d'aquests noms i les cases que estan 32 00:01:35,210 --> 00:01:39,810 actualment a la memòria RAM en el disc en forma de valors separats per comes. 33 00:01:39,810 --> 00:01:42,080 Per a això, utilitzarem tres noves funcions - 34 00:01:42,080 --> 00:01:47,450 F oberta, F printf i F de prop, el que obrir un arxiu, imprimir en un arxiu, i 35 00:01:47,450 --> 00:01:48,440 tancar un arxiu. 36 00:01:48,440 --> 00:01:49,690 Podem usar-los com segueix. 37 00:01:49,690 --> 00:01:52,110 38 00:01:52,110 --> 00:01:58,240 >> FILE, en majúscules, que és una cosa de una curiositat en C, FILE es fopen 39 00:01:58,240 --> 00:02:03,020 , Entre cometes i ara un nom per al presentar, per exemple, students.CSV, però vaig poder 40 00:02:03,020 --> 00:02:08,150 cridar gairebé qualsevol cosa, coma i ara estic va a especificar un únic w interior 41 00:02:08,150 --> 00:02:09,390 de cometes dobles. 42 00:02:09,390 --> 00:02:13,290 W, com ja hauran endevinat ja, vol dir que fopen ha d'obrir aquest arxiu 43 00:02:13,290 --> 00:02:17,360 anomenat Students.CSV per escriure de manera que en realitat podem estalviar alguns 44 00:02:17,360 --> 00:02:19,370 continguts a la mateixa. 45 00:02:19,370 --> 00:02:23,080 >> Anem proper xec si el fitxer no és igual a nul. 46 00:02:23,080 --> 00:02:25,860 Perquè si ho és, alguna cosa té probablement anat malament en aquest cas es 47 00:02:25,860 --> 00:02:28,340 no ha de procedir a tractar imprimir res a ella. 48 00:02:28,340 --> 00:02:33,400 Però si no és nul, dins del claus que repetiré 49 00:02:33,400 --> 00:02:38,030 d'i és igual a 0 en un màxim de ESTUDIANTS, i jo vaig a 50 00:02:38,030 --> 00:02:40,180 Increment de i en cada iteració. 51 00:02:40,180 --> 00:02:45,750 I dins d'aquest bucle, vaig a fprintf fi d'imprimir en un arxiu - 52 00:02:45,750 --> 00:02:47,940 específicament l'un Ja vaig obrir - 53 00:02:47,940 --> 00:02:54,650 una cadena que té aquest% s,% s barra invertida n Tancament de cometes. 54 00:02:54,650 --> 00:02:58,790 >> I ara vull connectar a cada un els marcadors de posició dels valors reals 55 00:02:58,790 --> 00:03:03,390 del nom d'un estudiant i una casa usant l'operador punt. 56 00:03:03,390 --> 00:03:10,030 I.name suport d'Estudiants, estudiants i.house suport prop parin 57 00:03:10,030 --> 00:03:11,230 punt i coma. 58 00:03:11,230 --> 00:03:16,180 Ara per sota d'aquest bucle, estic simplement Trucaré a fclose d'arxiu per tal 59 00:03:16,180 --> 00:03:18,520 en última instància, per tancar l'arxiu. 60 00:03:18,520 --> 00:03:21,360 >> Ara quan executo aquest programa, que no hauria realment veure res a la 61 00:03:21,360 --> 00:03:25,010 pantalla, però hauria d'haver fet després de córrer aquest programa un arxiu anomenat 62 00:03:25,010 --> 00:03:29,130 Students.CSV en el mateix directori que Executar la comanda en què s'ha 63 00:03:29,130 --> 00:03:32,480 contenir una separada per comes llista de valors. 64 00:03:32,480 --> 00:03:34,790 Anem a fer una ullada. 65 00:03:34,790 --> 00:03:41,690 >> Fer les estructures 1. / Structs1 de l'estudiant nom, diguem que David, 66 00:03:41,690 --> 00:03:43,140 viurà en Mather. 67 00:03:43,140 --> 00:03:46,890 El nom de l'estudiant, diguem, Lauren, viurà en Leverett. 68 00:03:46,890 --> 00:03:50,800 El nom de l'estudiant, diguem, Rob, viurà en Kirkland. 69 00:03:50,800 --> 00:03:54,050 Ara, de nou, com era d'esperar, no apareix res haver succeït, però permetin-me 70 00:03:54,050 --> 00:03:58,790 vagi per davant en l'indicatiu i escriviu g edició students.CSV amb l'esperança que 71 00:03:58,790 --> 00:04:00,850 aquest arxiu en veritat existeix. 72 00:04:00,850 --> 00:04:07,010 >> Gedit students.CSV ENTER, i de fet, compte que un arxiu que conté purament 73 00:04:07,010 --> 00:04:11,320 text, sinó de text separat per comes per a cada camp, de fet existeix. 74 00:04:11,320 --> 00:04:14,530 I si estàvem utilitzant, no el CS50 aparell, però un Mac més familiar o 75 00:04:14,530 --> 00:04:18,080 PC, resulta que podríem de fet obrir el fitxer CSV amb una més 76 00:04:18,080 --> 00:04:20,400 programa familiar com Excel o Numbers. 77 00:04:20,400 --> 00:04:22,906