2 00:00:00,000 --> 00:00:02,470 >> INTERLOCUTEUR 1: Écrivons un programme qui demande à l'utilisateur les noms et 3 00:00:02,470 --> 00:00:03,990 maisons de trois étudiants. 4 00:00:03,990 --> 00:00:07,300 Mais plutôt que de simplement imprimer leur noms et des maisons à l'écran, nous allons 5 00:00:07,300 --> 00:00:09,660 place sauf que l'information sur le disque. 6 00:00:09,660 --> 00:00:14,530 En d'autres termes, nous allons créer, par exemple, un fichier CSV fichier, pour comma separated values, 7 00:00:14,530 --> 00:00:17,720 qui est en fait juste un fichier texte des programmes tels que Excel ou Numbers 8 00:00:17,720 --> 00:00:21,690 peut ouvrir, et sauver ceux efficacement noms et les maisons de façon permanente et 9 00:00:21,690 --> 00:00:23,220 nous pouvons les examiner plus tard. 10 00:00:23,220 --> 00:00:25,960 >> Pour ce faire, nous allons jeter un oeil à la première un code passe-partout que je n'ai 11 00:00:25,960 --> 00:00:27,650 commencé avec déjà. 12 00:00:27,650 --> 00:00:32,380 Remarquez d'abord que parmi les têtes là-haut est maintenant lib.h norme qui 13 00:00:32,380 --> 00:00:36,710 arrive à avoir des fonctions liées de déposer E / S, l'entrée et le fichier de sortie. 14 00:00:36,710 --> 00:00:39,560 Remarquez que j'ai aussi déclaré une constante appelée ÉTUDIANTS - 15 00:00:39,560 --> 00:00:42,380 en majuscules - dont la valeur est codé en dur que trois. 16 00:00:42,380 --> 00:00:45,820 Remarquez maintenant que l'intérieur de mon principal programme, je vous déclarez un tableau de 17 00:00:45,820 --> 00:00:50,270 trois tailles en utilisant cette constante appelée ÉTUDIANTS dont chaque membre est de 18 00:00:50,270 --> 00:00:51,650 tapez étudiants. 19 00:00:51,650 --> 00:00:56,150 >> Rappelons maintenant que l'élève nous allons définir comme ayant un nom et une maison à la fois de 20 00:00:56,150 --> 00:01:00,410 qui sont des chaînes que par ce déclaration indique, point h. 21 00:01:00,410 --> 00:01:04,680 Maintenant de retour dans structs1.c, vous remarquerez que je ont une boucle ici que ça va 22 00:01:04,680 --> 00:01:06,750 effectuer une itération à partir de zéro jusqu'à trois. 23 00:01:06,750 --> 00:01:10,020 Il va me demander un étudiant de nom et la maison d'un étudiant 24 00:01:10,020 --> 00:01:12,310 encore et encore et encore. 25 00:01:12,310 --> 00:01:15,620 >> Ensuite, au bas de ce programme, remarquerez que j'ai une autre boucle 26 00:01:15,620 --> 00:01:19,970 cela va libérer de l'élève ième nom et la maison de l'étudiant i dans un 27 00:01:19,970 --> 00:01:21,570 construite de façon similaire boucle. 28 00:01:21,570 --> 00:01:24,480 Pour être sûr, nous pourrions combiner ces boucles en une seule, mais je voulais 29 00:01:24,480 --> 00:01:28,180 avoir des segments distincts de code pour les besoins du débat ici. 30 00:01:28,180 --> 00:01:31,920 >> Maintenant entre ceux pour les boucles, nous allons effectivement avoir un autre, et de celui-ci 31 00:01:31,920 --> 00:01:35,210 but dans la vie est de réellement sauver tous de ces noms et les maisons qui sont 32 00:01:35,210 --> 00:01:39,810 actuellement dans la RAM sur le disque sous la forme de comma separated values. 33 00:01:39,810 --> 00:01:42,080 Pour ce faire, nous allons utiliser trois nouvelles fonctions - 34 00:01:42,080 --> 00:01:47,450 F ouvert, F printf, et F proximité, qui ouvrir un fichier, imprimer dans un fichier, et 35 00:01:47,450 --> 00:01:48,440 fermer un fichier. 36 00:01:48,440 --> 00:01:49,690 Nous pouvons les utiliser de la manière suivante. 37 00:01:49,690 --> 00:01:52,110 38 00:01:52,110 --> 00:01:58,240 >> FILE, en majuscules, qui est en quelque sorte une curiosité en C, fichier est fopen 39 00:01:58,240 --> 00:02:03,020 entre guillemets et maintenant un nom pour le déposer, par exemple, students.CSV, mais je ne pouvais 40 00:02:03,020 --> 00:02:08,150 appeler plus rien, virgule et maintenant je suis va spécifier un seul w intérieur 41 00:02:08,150 --> 00:02:09,390 de guillemets. 42 00:02:09,390 --> 00:02:13,290 W, comme vous pouvez l'avez déjà deviné, signifie que la fonction fopen devrait ouvrir ce fichier 43 00:02:13,290 --> 00:02:17,360 appelé Students.CSV pour écrire de manière que nous pouvons économiser de l' 44 00:02:17,360 --> 00:02:19,370 contenu à elle. 45 00:02:19,370 --> 00:02:23,080 >> Prochain chèque de laisser si le fichier n'est pas égal à zéro. 46 00:02:23,080 --> 00:02:25,860 Parce que si c'est le cas, quelque chose a probablement mal tourné dans ce cas, nous 47 00:02:25,860 --> 00:02:28,340 ne devrait pas procéder à essayer d'imprimer quoi que ce soit. 48 00:02:28,340 --> 00:02:33,400 Mais si ce n'est pas nulle, puis à l'intérieur de la accolades que je vais parcourir 49 00:02:33,400 --> 00:02:38,030 de i est égal à 0 sur place aux étudiants, et je vais 50 00:02:38,030 --> 00:02:40,180 incrément I à chaque itération. 51 00:02:40,180 --> 00:02:45,750 Et à l'intérieur de cette boucle, je vais fprintf manière à imprimer un fichier - 52 00:02:45,750 --> 00:02:47,940 spécifiquement l'une J'ai déjà ouvert - 53 00:02:47,940 --> 00:02:54,650 une chaîne qui ressemble à ceci% s,% s barre oblique inverse n fermant. 54 00:02:54,650 --> 00:02:58,790 >> Et maintenant, je veux brancher à chacun des ces espaces réservés aux valeurs réelles 55 00:02:58,790 --> 00:03:03,390 du nom de l'élève et une maison en utilisant l'opérateur point. 56 00:03:03,390 --> 00:03:10,030 Les élèves, les étudiants support i.name support i.house proches paren 57 00:03:10,030 --> 00:03:11,230 point-virgule. 58 00:03:11,230 --> 00:03:16,180 Maintenant dessous de cette boucle, je suis tout simplement vais appeler fclose de fichier pour 59 00:03:16,180 --> 00:03:18,520 à fermer en fin de compte le fichier. 60 00:03:18,520 --> 00:03:21,360 >> Maintenant, quand je lance ce programme, je ne devrais pas réellement voir quoi que ce soit sur le 61 00:03:21,360 --> 00:03:25,010 écran, mais je devrais avoir après l'exécution ce programme un fichier appelé 62 00:03:25,010 --> 00:03:29,130 Students.CSV dans le même répertoire que Je lance la commande en ce que devrait 63 00:03:29,130 --> 00:03:32,480 contenir un séparées par des virgules liste de valeurs. 64 00:03:32,480 --> 00:03:34,790 Jetons un coup d'oeil. 65 00:03:34,790 --> 00:03:41,690 >> De faire struct 1. / Structs1 étudiant nom, disons David, 66 00:03:41,690 --> 00:03:43,140 il vivra à Mather. 67 00:03:43,140 --> 00:03:46,890 Nom de l'étudiant, disons, Lauren, elle vivra dans Leverett. 68 00:03:46,890 --> 00:03:50,800 Nom de l'étudiant, disons, Rob, il vivra à Kirkland. 69 00:03:50,800 --> 00:03:54,050 Maintenant, encore une fois, comme prévu, rien ne s'affiche être arrivé, mais laissez-moi 70 00:03:54,050 --> 00:03:58,790 aller de l'avant à l'invite de commande et tapez g modifier students.CSV dans l'espoir que 71 00:03:58,790 --> 00:04:00,850 ce fichier existe bel et bien. 72 00:04:00,850 --> 00:04:07,010 >> Gedit students.CSV ENTER, et en effet, remarquer qu'un fichier contenant uniquement 73 00:04:07,010 --> 00:04:11,320 texte, mais le texte séparé par des virgules pour chaque domaine, il existe en effet. 74 00:04:11,320 --> 00:04:14,530 Et si nous utilisions, pas le CS50 appareil, mais un Mac plus familier ou 75 00:04:14,530 --> 00:04:18,080 PC, il s'avère que nous avons pu en effet ouvrir ce fichier CSV avec un plus 76 00:04:18,080 --> 00:04:20,400 programme familier comme Excel ou Numbers. 77 00:04:20,400 --> 00:04:22,906