1 00:00:00,000 --> 00:00:00,560 2 00:00:00,560 --> 00:00:02,460 >> DAVID J. MALAN: Lad os tage tingene et skridt videre, nu. 3 00:00:02,460 --> 00:00:05,450 Antag, at jeg ikke bare vil at udskrive alle mine programmets 4 00:00:05,450 --> 00:00:06,630 kommandolinjeargumenter. 5 00:00:06,630 --> 00:00:10,490 Men jeg i stedet ønsker at udskrive alle enkelte tegn i hver af 6 00:00:10,490 --> 00:00:14,060 min kommandolinje argumenter, én pr linje, så at ved at køre dette 7 00:00:14,060 --> 00:00:17,490 program, jeg simpelthen se en strøm på tegn på skærmen, 8 00:00:17,490 --> 00:00:20,700 kollektivt er fra min sekvens af kommandolinjeargumenter. 9 00:00:20,700 --> 00:00:21,980 >> Nå, hvordan kan jeg gøre dette? 10 00:00:21,980 --> 00:00:26,540 Jeg kan holde intakt min bue fra før hvorved jeg iterative fra i op til 11 00:00:26,540 --> 00:00:30,060 Argc for at integrere over kommandolinjeargumenter selv. 12 00:00:30,060 --> 00:00:34,460 Men nu, inden for hver iteration af det loop, jeg har brug for nu gentage over hver 13 00:00:34,460 --> 00:00:38,550 af de tegn eller tegn i en bestemt streng. 14 00:00:38,550 --> 00:00:40,620 Så for at gøre det, jeg har brug for en mere løkke. 15 00:00:40,620 --> 00:00:42,090 >> Lad os tilføje, at. 16 00:00:42,090 --> 00:00:46,890 til int, lad os kalde det j, lig 0. 17 00:00:46,890 --> 00:00:49,980 Nu vil jeg få brug for at integrere indtil længden af 18 00:00:49,980 --> 00:00:52,310 aktuelle streng i ARGV. 19 00:00:52,310 --> 00:00:55,910 Så lad mig give mig en anden lokal variabel, vi kalder det n, og sæt 20 00:00:55,910 --> 00:01:00,120 der svarer til strengen længden af nuværende argument, som vil være 21 00:01:00,120 --> 00:01:04,230 findes i ARGV beslag jeg semikolon. 22 00:01:04,230 --> 00:01:08,500 >> Lad mig nu gentage fra j op indtil n efterfulgt af en 23 00:01:08,500 --> 00:01:10,400 tilvækst på hver iteration. 24 00:01:10,400 --> 00:01:13,850 Lad os nu udskrive den enkelte Tegnene på skærmen. 25 00:01:13,850 --> 00:01:21,920 Printf% c denne gang efterfulgt af en ny linje tæt citat, komma, og nu har jeg 26 00:01:21,920 --> 00:01:25,565 brug for j-th karakter i den i'te argument. 27 00:01:25,565 --> 00:01:30,240 >> Så for at komme på det, kan jeg simpelthen specificere ARV beslag i til 28 00:01:30,240 --> 00:01:32,050 få det i'te argument. 29 00:01:32,050 --> 00:01:36,140 Og så kan jeg dykke i et niveau dybere og gøre en sekundær indeks 30 00:01:36,140 --> 00:01:40,420 beslag j tæt parentes, semikolon, Gem. 31 00:01:40,420 --> 00:01:43,610 Og lad os nu kompilere og køre dette program. 32 00:01:43,610 --> 00:01:46,630 >> Make ARGV2 - 33 00:01:46,630 --> 00:01:48,440 ikke helt, hvad jeg havde forventet. 34 00:01:48,440 --> 00:01:50,740 Lad os rulle op til den første af disse fejlmeddelelser. 35 00:01:50,740 --> 00:01:54,540 Og i rødt her, ser vi fejl, implicit erklære biblioteksfunktionen 36 00:01:54,540 --> 00:01:56,290 strlen med type - 37 00:01:56,290 --> 00:01:57,380 åh, vent et øjeblik. 38 00:01:57,380 --> 00:02:00,340 Det er første gang, jeg har brugt strlen, og jeg ikke foregribe 39 00:02:00,340 --> 00:02:04,970 ønsker det i første omgang, så jeg ikke omfatte header fil, der erklærer 40 00:02:04,970 --> 00:02:06,290 en streng længde funktion. 41 00:02:06,290 --> 00:02:09,419 >> Så på toppen af ​​min fil, tilbagekaldelse, jeg har CS50.h. 42 00:02:09,419 --> 00:02:11,080 Jeg har standard io.h. 43 00:02:11,080 --> 00:02:14,500 Men det viser sig, og jeg kender det fra læse dokumentationen, at jeg har brug for 44 00:02:14,500 --> 00:02:18,320 en tredje header fil, hvis jeg, ja, ønsker at bruge strlen funktionen. 45 00:02:18,320 --> 00:02:22,760 Denne funktion er erklæret i string.h. 46 00:02:22,760 --> 00:02:25,230 >> Lad os gem filen, kompilere og køre. 47 00:02:25,230 --> 00:02:32,360 48 00:02:32,360 --> 00:02:35,570 Og denne gang, gør vi ikke bare se hver af argumenterne. 49 00:02:35,570 --> 00:02:40,470 Vi i stedet se hver enkelt af de argumenter, et tegn ad gangen. 50 00:02:40,470 --> 00:02:43,165