ALTAVEU 1: Anem a escriure un programa que sol · licita a l'usuari els noms i cases de tres estudiants. Ara, per emmagatzemar els noms i cases podríem utilitzar, què, sis variables. Tres cadenes per als noms, i un altre tres cadenes per a les cases, però ja sabem que podem netejar que el codi mitjançant l'ús de matrius lloc, per exemple, una matriu de mida 3 per al tres noms, i una altra sèrie de mida 3 per a les cases. Però resulta que podem netejar això encara més lluny, i en realitat mantenir els noms i cases juntes, de manera que una el nom de l'estudiant i de casa són d'alguna manera encapsulada, per així parlar, en la mateixa variable. Per a això, però, hem de declarar nostre propi tipus de dades, el nostre propi tipus en C, que els autors de C no necessàriament pensar en fa anys. Per a això podem utilitzar la paraula clau typedef, juntament amb la altra estructura de paraules clau. Anem a fer una ullada. Dins structs.h, ja he fet més que començar per incloent la biblioteca CS50. Estic al costat va a escriure typedef struct, i després una clau. A l'interior de l'estructura, que vaig a especificar que un estudiant ha de tenir un cadena anomenat nom, i una altra string anomenat casa. Vaig a continuació, tanca les meves claus, i especificar que el nom de aquest nou tipus de dades ha de ser estudiant. En altres paraules, a través d'aquesta sintaxi he declarat un nou tipus de dades de la meva pròpia que no existien fa un moment, i dins d'aquest tipus de dades són dues dades camps o membres de dades, un anomenat nom, un anomenat casa, dos dels quals són de tipus cadena. Ara utilitzarem aquest tipus en un programa real. En structs0.c, m'he ficat de manera similar jo ja va començar amb alguns codi repetitiu, i estic ara utilitzarem aquestes dades escrigui estudiant, de la següent manera. Estic primer va a declarar una matriu de tipus estudiant, vaig a trucar als estudiants de la matriu - plural - i vaig a especificar que la seva mida serà 3, que, avís, és el valor de les constants ESTUDIANTS - en totes les capitals - que jo he declarat aquí, anteriorment a l'arxiu. Ara anem a iterar sobre els tres estudiants, i sol · licitar a l'usuari els seus noms i cases. per int i obtenir 0, i és menor que la constant, i + +. I ara a l'interior del cos d'aquesta per llaç, vaig a imprimir alguna cosa com el nom de l'estudiant. Llavors vaig a aconseguir realment que nom de l'estudiant especificant estudiants mènsula. En altres paraules, vull que l'estudiant i-èsim en la matriu anomenada estudiants, però ara Vull arribar a aquest nombre i estudiantil nom, i per fer això, utilitzaré el. operador, per tal d'arribar a un dins del camp específic de l'estructura. Així que jo indiqui estudiants mènsula. Nom s'obté el valor de retorn de GetString (). Mentrestant, vaig a imprimir alguna cosa similar, dient que els estudiants de casa, i ara em vaig a especificar que el camp dels estudiants la casa nombre i haurà d'obtenir el valor de retorn de altra crida a GetString (). Ara farem alguna cosa amb aquests tres noms i les cases dels estudiants, una cosa tan simple com la impressió cadascun en una frase. per int i get 0, de nou i és menor que estudiants, i + +, printf "% s està a% s. barra invertida n ", i ara m'ho dius endollar els valors d'aquests dos camps, estudiants mènsula. nom, coma, estudiants mènsula. casa, prop parin, punt i coma. I ara he de fer una cosa més. En el fons d'aquest arxiu, necessito alliberar la memòria que es va assignar darrere de les escenes de GetSring (), que demana, per descomptat, malloc, per tal de assignar memòria per a les cadenes els tipus d'usuaris. Però això és simple. per int i obtenir 0, i és menor que estudiants, i + +, i l'interior del cos de aquest bucle, estic simplement va a proporcionar als estudiants sense suport de i. nom, i els estudiants lliures mènsula. casa. Ara, hem utilitzat clarament tres bucles for en aquest programa, quan realment podria haver utilitzat només un, però això és simplement per l'amor de la demostració, per la qual cosa podem especificar en tres canals diferents Passos què és exactament el que estem fent. Estem obtenint primer un nom i una casa per a cada un dels estudiants, estem llavors imprimir el nom i la casa de cadascun dels tres estudiants, i a continuació, anem a alliberar la memòria utilitzat per cada un dels estudiants. Però segur que podríem haver combinar aquest en un més gran per bucle. Ara anem a guardar, compilar, i executar aquest programa. fer estructures 0. 0 / estructures, estudiant de nom, anem a proporcionar David, viurà en Mather House, el nom de l'estudiant, anem a dir Lauren, ella viu en Leverett Casa, nom de l'estudiant, Rob, ell viure en Kirkland House. I, de fet, David està en Mather, Lauren està en Leverett, i Rob es troba a Kirkland.