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.