2 00:00:00,000 --> 00:00:02,470 >> ALTAVOZ 1: Vamos a escribir un programa que solicita al usuario los nombres y 3 00:00:02,470 --> 00:00:03,990 casas de tres estudiantes. 4 00:00:03,990 --> 00:00:07,300 Pero en lugar de sólo imprimir su nombres y casas a la pantalla, vamos a 5 00:00:07,300 --> 00:00:09,660 en lugar guardar dicha información en el disco. 6 00:00:09,660 --> 00:00:14,530 En otras palabras, vamos a crear, por ejemplo, un archivo CSV archivo, para los valores separados por comas, 7 00:00:14,530 --> 00:00:17,720 que en realidad es sólo un archivo de texto que programas como Excel o números 8 00:00:17,720 --> 00:00:21,690 puede abrir, y efectivamente salvar a los nombres y las casas de forma permanente para que 9 00:00:21,690 --> 00:00:23,220 podemos revisarlos más tarde. 10 00:00:23,220 --> 00:00:25,960 >> Para ello, primero vamos a echar un vistazo a algún código repetitivo que tengo 11 00:00:25,960 --> 00:00:27,650 comenzado con ya. 12 00:00:27,650 --> 00:00:32,380 Note primero que entre las cabeceras encima de la tapa es ahora lib.h norma que 13 00:00:32,380 --> 00:00:36,710 pasa a tener algunas funciones relacionadas para presentar de E / S, entrada y salida de archivos. 14 00:00:36,710 --> 00:00:39,560 Fíjate que yo también he declarado una constante llamada ESTUDIANTES - 15 00:00:39,560 --> 00:00:42,380 en todas las tapas - cuyo valor se codifica duro como tres. 16 00:00:42,380 --> 00:00:45,820 Note ahora que dentro de mi principal programa, estoy declarando un arreglo de 17 00:00:45,820 --> 00:00:50,270 El tamaño de tres usando que constante llamada ESTUDIANTES cada uno de cuyos miembros es de 18 00:00:50,270 --> 00:00:51,650 escriba los estudiantes. 19 00:00:51,650 --> 00:00:56,150 >> Recordemos ahora que un estudiante que va a definir como tener un nombre y una casa de dos 20 00:00:56,150 --> 00:01:00,410 que son cadenas como por esta Declaración se dan instrucciones, punto h. 21 00:01:00,410 --> 00:01:04,680 Ahora, de vuelta en structs1.c, observe que han un bucle aquí que va a 22 00:01:04,680 --> 00:01:06,750 iterar desde cero hasta tres. 23 00:01:06,750 --> 00:01:10,020 Se va a pedir confirmación en un estudiante de nombre y la casa de un estudiante 24 00:01:10,020 --> 00:01:12,310 una y otra vez y otra vez. 25 00:01:12,310 --> 00:01:15,620 >> Luego en la parte inferior de este programa, cuenta de que tengo otro bucle for 26 00:01:15,620 --> 00:01:19,970 eso va a liberar del estudiante ith nombre y la casa del estudiante i en un 27 00:01:19,970 --> 00:01:21,570 construido de manera similar bucle. 28 00:01:21,570 --> 00:01:24,480 Para estar seguros, podemos combinar esos bucles en uno solo, pero yo quería 29 00:01:24,480 --> 00:01:28,180 tener algunos segmentos distintos de código por el bien de la discusión aquí. 30 00:01:28,180 --> 00:01:31,920 >> Ahora entre los bucles for, vamos a en realidad tienen los otros, y de éste 31 00:01:31,920 --> 00:01:35,210 propósito en la vida es salvar a toda la realidad de estos nombres y las casas que están 32 00:01:35,210 --> 00:01:39,810 actualmente en la memoria RAM en el disco en forma de valores separados por comas. 33 00:01:39,810 --> 00:01:42,080 Para ello, vamos a utilizar tres nuevas funciones - 34 00:01:42,080 --> 00:01:47,450 F abierta, F printf y F de cerca, lo que abrir un archivo, imprimir en un archivo, y 35 00:01:47,450 --> 00:01:48,440 cerrar un archivo. 36 00:01:48,440 --> 00:01:49,690 Podemos usarlos como sigue. 37 00:01:49,690 --> 00:01:52,110 38 00:01:52,110 --> 00:01:58,240 >> FILE, en mayúsculas, que es algo de una curiosidad en C, FILE se fopen 39 00:01:58,240 --> 00:02:03,020 , entre comillas y ahora un nombre para el presentar, por ejemplo, students.CSV, pero pude 40 00:02:03,020 --> 00:02:08,150 llamar casi cualquier cosa, coma y ahora estoy va a especificar un único w interior 41 00:02:08,150 --> 00:02:09,390 de comillas dobles. 42 00:02:09,390 --> 00:02:13,290 W, como ya habrán adivinado ya, significa que fopen debe abrir este archivo 43 00:02:13,290 --> 00:02:17,360 llamado Students.CSV para escribir de manera que en realidad podemos ahorrar algo 44 00:02:17,360 --> 00:02:19,370 contenidos a la misma. 45 00:02:19,370 --> 00:02:23,080 >> Vamos próximo cheque si el archivo no es igual a nulo. 46 00:02:23,080 --> 00:02:25,860 Porque si lo es, algo tiene probablemente ido mal en cuyo caso se 47 00:02:25,860 --> 00:02:28,340 no debe proceder a tratar imprimir nada a ella. 48 00:02:28,340 --> 00:02:33,400 Pero si no es nulo, dentro del llaves que voy a repetir 49 00:02:33,400 --> 00:02:38,030 de i es igual a 0 en un máximo de ESTUDIANTES, y yo voy a 50 00:02:38,030 --> 00:02:40,180 Incremento de i en cada iteración. 51 00:02:40,180 --> 00:02:45,750 Y dentro de este bucle, voy a fprintf fin de imprimir en un archivo - 52 00:02:45,750 --> 00:02:47,940 específicamente el uno Ya abrí - 53 00:02:47,940 --> 00:02:54,650 una cadena que tiene este% s,% s barra invertida n Cierre de comillas. 54 00:02:54,650 --> 00:02:58,790 >> Y ahora quiero conectar a cada uno de los marcadores de posición de los valores reales 55 00:02:58,790 --> 00:03:03,390 del nombre de un estudiante y una casa usando el operador punto. 56 00:03:03,390 --> 00:03:10,030 I.name soporte de Estudiantes, estudiantes i.house soporte cerca paren 57 00:03:10,030 --> 00:03:11,230 punto y coma. 58 00:03:11,230 --> 00:03:16,180 Ahora por debajo de este bucle, estoy simplemente Llamaré a fclose de archivo con el fin 59 00:03:16,180 --> 00:03:18,520 en última instancia, para cerrar el archivo. 60 00:03:18,520 --> 00:03:21,360 >> Ahora cuando ejecuto este programa, que no debería realmente ver nada en la 61 00:03:21,360 --> 00:03:25,010 pantalla, pero debería haberlo hecho después de correr este programa un archivo llamado 62 00:03:25,010 --> 00:03:29,130 Students.CSV en el mismo directorio que Ejecuto el comando en que debe 63 00:03:29,130 --> 00:03:32,480 contener una separada por comas lista de valores. 64 00:03:32,480 --> 00:03:34,790 Vamos a echar un vistazo. 65 00:03:34,790 --> 00:03:41,690 >> Hacer las estructuras 1. / Structs1 del estudiante nombre, digamos que David, 66 00:03:41,690 --> 00:03:43,140 vivirá en Mather. 67 00:03:43,140 --> 00:03:46,890 El nombre del estudiante, digamos, Lauren, vivirá en Leverett. 68 00:03:46,890 --> 00:03:50,800 El nombre del estudiante, digamos, Rob, vivirá en Kirkland. 69 00:03:50,800 --> 00:03:54,050 Ahora, de nuevo, como era de esperar, no aparece nada haber sucedido, pero permítanme 70 00:03:54,050 --> 00:03:58,790 vaya por delante en el símbolo del sistema y escriba g edición students.CSV con la esperanza de que 71 00:03:58,790 --> 00:04:00,850 ese archivo en verdad existe. 72 00:04:00,850 --> 00:04:07,010 >> Gedit students.CSV ENTER, y de hecho, cuenta de que un archivo que contiene puramente 73 00:04:07,010 --> 00:04:11,320 texto, sino de texto separado por comas para cada campo, de hecho existe. 74 00:04:11,320 --> 00:04:14,530 Y si estábamos usando, no el CS50 aparato, pero un Mac más familiar o 75 00:04:14,530 --> 00:04:18,080 PC, resulta que podríamos de hecho abrir el archivo CSV con una más 76 00:04:18,080 --> 00:04:20,400 programa familiar como Excel o Numbers. 77 00:04:20,400 --> 00:04:22,906