1 00:00:00,000 --> 00:00:00,440 2 00:00:00,440 --> 00:00:00,860 >> SPEAKER 1: Okej. 3 00:00:00,860 --> 00:00:03,260 Det sista programmet var lite tråkigt. 4 00:00:03,260 --> 00:00:05,510 Låt oss gå vidare och anpassa detta lite. 5 00:00:05,510 --> 00:00:07,710 I stället för att säga hej världen, varför vi inte gå vidare 6 00:00:07,710 --> 00:00:09,680 och säga, hej David? 7 00:00:09,680 --> 00:00:12,500 Jo, för att göra detta, skulle jag närma detta på ett par olika sätt. 8 00:00:12,500 --> 00:00:15,760 Jag kunde naturligtvis bara hårt kod David, men det är inte allt som 9 00:00:15,760 --> 00:00:17,650 fundamentalt olika från den senaste versionen. 10 00:00:17,650 --> 00:00:21,430 Så låt oss ta ett steg framåt, ångra att förändras, och i stället sätta in en ny 11 00:00:21,430 --> 00:00:23,980 kodrad där linje fem en gång var. 12 00:00:23,980 --> 00:00:28,970 >> Närmare bestämt vad jag ska göra här är att lägga in strängnamn och därigenom 13 00:00:28,970 --> 00:00:30,920 förklara en variabel. 14 00:00:30,920 --> 00:00:34,240 Lägg märke till att i C, inte bara du har för att ge en variabel ett namn, som i 15 00:00:34,240 --> 00:00:38,110 detta fall är namn, du har också att ange vilken typ det är. 16 00:00:38,110 --> 00:00:41,970 Vi får se andra typer inom kort, bland dem heltal och flyttal 17 00:00:41,970 --> 00:00:46,480 värderingar och mer, men för nu, sträng är bara ett ord eller en fras, mer 18 00:00:46,480 --> 00:00:49,340 formellt, en sekvens av noll eller flera tecken. 19 00:00:49,340 --> 00:00:53,760 Så för tillfället är denna linje fem ordstäv, ge mig en variabel som heter namn 20 00:00:53,760 --> 00:00:56,560 vars datatyp är sträng. 21 00:00:56,560 --> 00:01:00,460 >> Nu vill jag att lagra ett värde i det, och att göra det i C använder vi lika 22 00:01:00,460 --> 00:01:03,030 underteckna, annars känd som den tilldelningsoperator. 23 00:01:03,030 --> 00:01:04,860 Så jag kommer att fortsätta så här. 24 00:01:04,860 --> 00:01:10,220 Lika med citationstecken, unquote, D-A-V-I-D, stängt citat, semikolon. 25 00:01:10,220 --> 00:01:15,595 Nettoeffekten i linje fem är nu att förklara en sträng, D-A-V-I-D, lagrar 26 00:01:15,595 --> 00:01:19,480 det från den högra sidan av denna uttryck i variabeln på 27 00:01:19,480 --> 00:01:21,480 vänstra sidan av detta uttryck. 28 00:01:21,480 --> 00:01:25,970 Så i slutet av denna linje, vi har D-A-V-I-D lagras inuti en variabel 29 00:01:25,970 --> 00:01:27,450 heter namn. 30 00:01:27,450 --> 00:01:28,910 >> Nu låt oss använda denna variabel. 31 00:01:28,910 --> 00:01:35,010 På rad sex, kommer jag att byta ut värld med en platshållare. 32 00:01:35,010 --> 00:01:39,960 % S definieras enligt dokumentation för printf som en 33 00:01:39,960 --> 00:01:41,690 platshållare för en sträng. 34 00:01:41,690 --> 00:01:44,620 Med andra ord, det är ett sätt att informera printf att jag ska sätta 35 00:01:44,620 --> 00:01:47,930 något annat värde här, men låt mig berätta på bara ett ögonblick vad 36 00:01:47,930 --> 00:01:49,180 det kommer att bli. 37 00:01:49,180 --> 00:01:52,800 Nu, hur gör jag för att berätta printf vad det värdet kommer att bli? 38 00:01:52,800 --> 00:01:56,850 >> Tja, behöver jag för att ge printf med en andra argumentet, och att göra det, jag 39 00:01:56,850 --> 00:02:00,460 måste sätta ett kommatecken efter den första argument, som var här citerade 40 00:02:00,460 --> 00:02:04,990 sträng, och då måste jag ange vad värde jag vill koppla in det 41 00:02:04,990 --> 00:02:07,010 första argumentet är platshållare. 42 00:02:07,010 --> 00:02:10,880 Så namnet på min variabel är, om Naturligtvis namn, så att det är tillräckligt för att skriva 43 00:02:10,880 --> 00:02:14,000 "Namn" som den andra Argumentet att printf. 44 00:02:14,000 --> 00:02:15,070 Nu inte vilseledas. 45 00:02:15,070 --> 00:02:20,440 Även om det finns ett kommatecken inuti den citerade strängen, är det verkligen 46 00:02:20,440 --> 00:02:24,370 insidan av strängen så att den inte separera ett argument från en annan. 47 00:02:24,370 --> 00:02:28,740 Endast denna kommatecken som är utanför det citerade strängen faktiskt separerar 48 00:02:28,740 --> 00:02:31,700 printf första argument från sitt andra argument. 49 00:02:31,700 --> 00:02:34,270 >> Låt oss nu kompilera programmet. 50 00:02:34,270 --> 00:02:36,500 Gör hej en. 51 00:02:36,500 --> 00:02:39,570 Åh herregud, femte fel som genereras, och min programmets 52 00:02:39,570 --> 00:02:41,100 bara sju rader lång. 53 00:02:41,100 --> 00:02:44,720 Tja, som alltid, inte titta på det sista av felen på skärmen. 54 00:02:44,720 --> 00:02:47,960 Titta på den allra första eftersom kanske det finns en kaskadeffekt som innebär att 55 00:02:47,960 --> 00:02:51,600 bara ett fel upp topp skapade uppkomsten av fler fel än det 56 00:02:51,600 --> 00:02:52,570 egentligen är. 57 00:02:52,570 --> 00:02:56,620 >> Så låt mig rulla uppåt, och den första boldfaced fel här är användningen av 58 00:02:56,620 --> 00:02:59,140 odeklarerat identifieringssträng. 59 00:02:59,140 --> 00:03:00,630 Menade du standard? 60 00:03:00,630 --> 00:03:01,990 Nå nej, det gjorde jag inte. 61 00:03:01,990 --> 00:03:06,700 Jag menar sträng, men det visade sig att jag glömde att strängen finns inte som en 62 00:03:06,700 --> 00:03:10,830 skriver uppgifter tekniskt i C. Konceptuellt den finns, men ordet 63 00:03:10,830 --> 00:03:16,210 "Sträng" bara existerar därför att CS50 Personalen har förklarat det, så att säga, 64 00:03:16,210 --> 00:03:18,160 i en fil som vi själva skrivit. 65 00:03:18,160 --> 00:03:22,540 I själva verket, precis som någon för länge sedan förklarade printf funktion i en fil 66 00:03:22,540 --> 00:03:28,310 heter Standard IO.H, så gjorde vi det Personalen förklarar sträng som en datatyp i 67 00:03:28,310 --> 00:03:32,470 en fil som, ingen överraskning, kallas CS50.H. 68 00:03:32,470 --> 00:03:36,340 >> Så låt oss gå tillbaka till toppen av min programmera och informera kompilatorn att 69 00:03:36,340 --> 00:03:40,130 inte nog med att jag vill använda symbolen sträng, vill jag också att utbilda 70 00:03:40,130 --> 00:03:42,160 kompilator på vad den symbolen betyder. 71 00:03:42,160 --> 00:03:47,010 Och för att göra det helt enkelt, kan jag gå tillbaka upp till rad ett, infoga en ny rad 72 00:03:47,010 --> 00:03:54,070 här, och lägga till, "inkluderar CS50.H," även mellan vinklade konsoler. 73 00:03:54,070 --> 00:03:58,170 Denna anvisning, ungefär som det nu på rad två, kommer att informera 74 00:03:58,170 --> 00:04:02,460 kompilator att den bör omfatta Innehållet i CS50.H varhelst de är 75 00:04:02,460 --> 00:04:06,620 i min hårddisk inne i mitt program, därmed utbilda kompilatorn att 76 00:04:06,620 --> 00:04:09,050 vad som menas med sträng. 77 00:04:09,050 --> 00:04:13,420 >> Låt oss kompilera mitt program efter att spara ändringarna. 78 00:04:13,420 --> 00:04:15,500 Gör hej en. 79 00:04:15,500 --> 00:04:16,440 Enter. 80 00:04:16,440 --> 00:04:17,730 Mycket bättre. 81 00:04:17,730 --> 00:04:23,760 Nu har jag en blinkande prompt där jag kan skriva, ". / hello en," och voila. 82 00:04:23,760 --> 00:04:25,010 Hej David. 83 00:04:25,010 --> 00:04:26,402