>> ALTAVOZ 1: Vamos a escribir un programa que solicita al usuario los nombres y
casas de tres estudiantes.
Ahora, para almacenar los nombres y casas podríamos utilizar, qué, seis variables.
Tres cadenas para los nombres, y otro tres cadenas para las casas,
pero ya sabemos que podemos limpiar que el código mediante el uso de matrices lugar,
por ejemplo, una matriz de tamaño 3 para el tres nombres, y otra serie de
tamaño 3 para las casas.
Pero resulta que podemos limpiar esto aún más lejos, y en realidad mantener a los
nombres y casas juntas, de modo que una el nombre del estudiante y de su casa
son de alguna manera encapsulada, por así hablar, en la misma variable.
>> Para ello, sin embargo, tenemos que declarar nuestro propio tipo de datos, nuestro propio tipo en C,
que los autores de C no necesariamente pensar en hace años.
Para ello podemos utilizar la palabra clave typedef, junto con la
otra estructura de palabras clave.
Vamos a echar un vistazo.
Dentro de structs.h, ya he hecho más que empezar por
incluyendo la biblioteca CS50.
Estoy al lado va a escribir typedef struct, y luego una llave.
En el interior de la estructura, que voy a especificar que un estudiante debe tener un
cadena llamado nombre, y otra string llamado casa.
Voy a continuación, cierre mis llaves, y especificar que el nombre de
este nuevo tipo de datos debe ser estudiante.
En otras palabras, a través de esta sintaxis he declarado un nuevo tipo de datos de mi propia
que no existían hace un momento, y dentro de este tipo de datos son dos datos
campos o miembros de datos, uno llamado nombre, uno llamado casa, ambos de los cuales
son de tipo cadena.
>> Ahora vamos a utilizar este tipo en un programa real.
En structs0.c, me he metido de manera similar yo ya comenzó con algunos
código repetitivo, y estoy ahora vamos a utilizar estos datos
escriba estudiante, de la siguiente manera.
Estoy primero va a declarar una matriz de tipo estudiante, voy a
llamar a los estudiantes de la matriz -
plural -
y voy a especificar que su tamaño será tres, que, aviso, es el valor de
las constantes ESTUDIANTES -
en todas las capitales -
que yo he declarado aquí, anteriormente en el archivo.
Ahora vamos a iterar sobre los tres estudiantes, y solicitar al usuario
sus nombres y casas.
>> para int i obtener 0, i es menor que la constante, i + +.
Y ahora en el interior del cuerpo de esta para lazo, voy a imprimir algo
como el nombre del estudiante.
Entonces voy a conseguir realmente que nombre del estudiante especificando
estudiantes ménsula.
En otras palabras, quiero que el estudiante i-ésimo en la matriz denominada estudiantes, pero ahora
Quiero llegar a ese número i estudiantil nombre, y para hacer esto, voy a utilizar
el. operador, con el fin de llegar a un dentro del campo específico de la estructura.
Así que yo indique estudiantes ménsula. Nombre obtiene el valor de retorno de GetString ().
Mientras tanto, voy a imprimir algo similar, diciendo que los estudiantes de
casa, y ahora me voy a especificar que el campo de los estudiantes la casa número i
deberá obtener el valor de retorno de otra llamada a GetString ().
>> Ahora vamos a hacer algo con estos tres nombres y las casas de los estudiantes,
algo tan simple como la impresión cada uno en una frase.
para int i get 0, de nuevo i es menor que estudiantes, i + +, printf "% s está en% s.
barra invertida n ", y ahora déjame enchufo los valores de esos dos campos,
estudiantes ménsula. nombre, coma, estudiantes ménsula. casa, cerca
paren, punto y coma.
>> Y ahora tengo que hacer una cosa más.
En el fondo de este archivo, necesito liberar la memoria que se asignó
detrás de las escenas de GetSring (), que pide, por supuesto, malloc, con el fin de
asignar memoria para las cadenas los tipos de usuarios.
Pero esto es simple.
para int i obtener 0, i es menor que estudiantes, i + +, y el interior del cuerpo de
este bucle, estoy simplemente va a proporcionar a los estudiantes sin soporte de i. nombre,
y los estudiantes libres ménsula. casa.
>> Ahora, hemos utilizado claramente tres bucles for en este programa, cuando realmente
podría haber utilizado sólo uno, pero esto es simplemente por el amor de la demostración, por lo que
podemos especificar en tres canales distintos Pasos qué es exactamente lo que estamos haciendo.
Estamos obteniendo primero un nombre y una casa para cada uno de los estudiantes, estamos entonces
imprimir el nombre y la casa de cada uno de los tres estudiantes, y
a continuación, vamos a liberar la memoria utilizado por cada uno de los estudiantes.
Pero seguro que podríamos haber combinar este en uno más grande para bucle.
>> Ahora vamos a guardar, compilar, y ejecutar este programa.
hacer estructuras 0. 0 / estructuras, estudiante de nombre, vamos a proporcionar David, vivirá
en Mather House, el nombre del estudiante, vamos a decir Lauren, ella vive en Leverett
Casa, nombre del estudiante, Rob, él vivir en Kirkland House.
Y, de hecho, David está en Mather, Lauren está en Leverett,
y Rob se encuentra en Kirkland.