>> SPIKA 1: Hebu kuandika mpango huo humshauri mtumiaji kwa majina na
nyumba ya wanafunzi watatu.
Sasa, kuhifadhi majina hayo na nyumba tunaweza kutumia, nini, vigezo sita.
Masharti tatu kwa majina, na mwingine masharti tatu kwa nyumba,
lakini sisi tayari kujua kwamba tunaweza kusafisha kwamba kanuni kwa kutumia arrays badala yake,
kwa mfano safu ya ukubwa 3 kwa ajili ya majina matatu, na safu nyingine ya
ukubwa 3 kwa ajili ya nyumba.
Lakini zinageuka tunaweza safi hii up zaidi bado, na kwa kweli kuweka wale
majina na nyumba pamoja, ili jina mwanafunzi na nyumba yake
ni kwa namna fulani zimegawanywa, hivyo kusema, katika variable moja.
>> Kwa kufanya hivyo, ingawa, sisi haja ya kutangaza mwenyewe data aina yetu, aina yetu wenyewe katika C,
kwamba waandishi wa C alifanya si lazima kufikiri ya miaka iliyopita.
Kwa kufanya hivyo tunaweza kutumia neno la typedef, pamoja na
nyingine keyword struct.
Hebu tuangalie.
Ndani ya structs.h, nimekuwa tayari kujipatia kuanza kwa
ikiwa ni pamoja na maktaba CS50.
Mimi nina ijayo kwenda aina struct typedef, na kisha brace curly.
Ndani ya struct, mimi nina kwenda kwa bayana kwamba mwanafunzi atakuwa na
string kuitwa jina, na mwingine string kuitwa nyumba.
Mimi nina kwenda kisha kufunga braces yangu curly, na bayana kwamba jina la
aina hii mpya data itakuwa mwanafunzi.
Kwa maneno mengine, kupitia syntax hii na mimi alitangaza data mpya aina ya yangu mwenyewe
ambayo haikuwepo wakati uliopita, na ndani ya aina hii data ni data mbili
mashamba au wanachama data, mtu mmoja aitwaye jina, mtu mmoja aitwaye nyumba, wote wawili ambao
ni ya kamba aina.
>> Hebu sasa kutumia aina hii katika mpango halisi.
Katika structs0.c, nimekuwa vile vile kujipatia mwenyewe ilianza tayari kwa baadhi
boilerplate, na mimi nina sasa kwenda kutumia data hii
aina mwanafunzi, kama ifuatavyo.
Mimi kwanza kwenda kutangaza safu ya aina mwanafunzi, mimi itabidi
kuwaita safu wanafunzi -
wingi -
na mimi itabidi bayana kwamba ukubwa wake itakuwa tatu, ambayo, angalia, ni thamani ya
WANAFUNZI mara kwa mara -
katika miji mikuu yote -
kwamba nimepata alitangaza hapa, mapema katika faili.
Hebu sasa iterate juu ya wale watatu wanafunzi, na kuchochea user kwa
majina yao na nyumba.
>> kwa int i kupata 0, i ni chini ya kuliko ile ya mara kwa mara, i + +.
Na sasa ndani ya mwili wa hii kwa ajili kitanzi, mimi nina kwenda magazeti nje kitu
kama jina mwanafunzi.
Mimi kisha kwenda kwa kweli kupata kwamba jina mwanafunzi na kubainisha
wanafunzi mabano i.
Kwa maneno mengine nataka i-th mwanafunzi katika safu kuitwa wanafunzi, lakini sasa
Nataka kupata wakati huo i-th mwanafunzi jina, na kwa kufanya hivyo, mimi naenda kutumia
. operator, ili kupata katika shamba ndani ya maalum ya struct.
Basi, mimi bayana wanafunzi mabano i jina. anapata thamani ya kurudi kwa GetString ().
Wakati huo huo, mimi nina kwenda magazeti nje kitu sawa, akisema mwanafunzi
nyumba, na sasa mimi nina kwenda bayana kwamba i-th shamba wanafunzi nyumba
atakuwa kupata thamani ya kurudi kwa mwingine wito kwa GetString ().
>> Sasa hebu kufanya kitu kwa hawa watatu majina na nyumba ya wanafunzi ',
kitu rahisi kama uchapishaji kila nje katika hukumu.
kwa int i kupata 0, tena i ni chini ya wanafunzi, i + +, printf "% s ni katika% s.
backslash n ", na sasa napenda kuziba katika maadili ya mashamba ya hizo mbili,
wanafunzi mabano i. jina, comma, wanafunzi mabano i. nyumba, karibu
paren, semicolon.
>> Na sasa mimi haja ya kufanya jambo moja zaidi.
Chini ya faili hili, mimi haja ya bure kumbukumbu kwamba zilizotengwa kwa ajili ya
nyuma ya pazia na GetSring (), ambayo bila shaka wito malloc, ili
kutenga kumbukumbu kwa masharti user aina.
Lakini kwa hili ni rahisi.
kwa int i kupata 0, i ni chini ya wanafunzi, i + +, na ndani ya mwili wa
hii kwa kitanzi, mimi nina tu kwenda kutoa bure wanafunzi bracket i jina.,
na bure wanafunzi mabano i. nyumba.
>> Sasa, tumekuwa wazi kutumika tatu kwa loops katika mpango huu, wakati kwa kweli mimi
inaweza kuwa tu kutumika moja, lakini hii ni tu kwa ajili ya maandamano, ili
tunaweza kutaja katika tatu tofauti hatua nini hasa sisi ni kufanya.
Sisi ni kwanza kupata jina na nyumba kwa kila mmoja wa wanafunzi, sisi ni kisha
uchapishaji nje jina na nyumba kwa kila mmoja wa wanafunzi tatu, na
kisha tunakwenda bure kumbukumbu kutumiwa na kila mmoja wa wanafunzi.
Lakini hakika tunaweza wameweza kuchanganya hili katika moja kubwa kwa kitanzi.
>> Hebu sasa kuokoa, kukusanya, na kuendesha mpango huu.
kufanya structs 0. / structs 0, mwanafunzi jina, hebu kutoa Daudi, yeye itabidi kuishi
katika Mather House, jina mwanafunzi, hebu kusema Lauren, yeye itabidi kuishi katika Leverett
House, jina mwanafunzi, Rob, yeye itabidi kuishi katika Kirkland House.
Na hakika, David ni katika Mather, Lauren ni katika Leverett,
na Rob ni katika Kirkland.