>> 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.