1 00:00:00,000 --> 00:00:00,560 2 00:00:00,560 --> 00:00:02,460 >> DAVID J. MALAN: La oss ta ting ett skritt videre, nå. 3 00:00:02,460 --> 00:00:05,450 Anta at jeg ikke bare vil å skrive ut alle mine programmets 4 00:00:05,450 --> 00:00:06,630 kommandolinjeargumentene. 5 00:00:06,630 --> 00:00:10,490 Men jeg, i stedet, ønsker å skrive ut alle individuelle tegn i hvert av 6 00:00:10,490 --> 00:00:14,060 mine kommandolinjeargumenter, én per linje, slik at ved å kjøre denne 7 00:00:14,060 --> 00:00:17,490 program, I bare ser en strøm av tegn på skjermen som 8 00:00:17,490 --> 00:00:20,700 kollektivt er fra min sekvens av kommandolinjeargumenter. 9 00:00:20,700 --> 00:00:21,980 >> Vel, hvordan kan jeg gjøre dette? 10 00:00:21,980 --> 00:00:26,540 Jeg kan holde intakt min sløyfe fra før hvorved jeg iterativ fra jeg frem til 11 00:00:26,540 --> 00:00:30,060 Argc for å integrere over hele kommandolinjeargumenter selv. 12 00:00:30,060 --> 00:00:34,460 Men nå, innenfor hver iterasjon av at loop, trenger jeg å nå iterere over hver 13 00:00:34,460 --> 00:00:38,550 av tegn eller tegn i et bestemt streng. 14 00:00:38,550 --> 00:00:40,620 Så for å gjøre det, trenger jeg en mer loop. 15 00:00:40,620 --> 00:00:42,090 >> La oss legge til at. 16 00:00:42,090 --> 00:00:46,890 for int, la oss kalle det j, er lik 0. 17 00:00:46,890 --> 00:00:49,980 Nå kommer jeg til å trenge å integrere opp til lengden av 18 00:00:49,980 --> 00:00:52,310 aktuelle strengen i ARGV. 19 00:00:52,310 --> 00:00:55,910 Så la meg gi meg en annen lokal variable, vil vi kalle det n, og angi 20 00:00:55,910 --> 00:01:00,120 som er lik lengden av strengen gjeldende argument, som kommer til å være 21 00:01:00,120 --> 00:01:04,230 funnet i ARGV brakett jeg semikolon. 22 00:01:04,230 --> 00:01:08,500 >> La meg nå iterere fra j opp inntil n etterfulgt av en 23 00:01:08,500 --> 00:01:10,400 øke på hver iterasjon. 24 00:01:10,400 --> 00:01:13,850 La oss nå skrive den enkelte tegn på skjermen. 25 00:01:13,850 --> 00:01:21,920 Printf% c denne gang etterfulgt av en ny linjen, nær sitat, komma, og nå har jeg 26 00:01:21,920 --> 00:01:25,565 trenger den j-te karakter i i-te argument. 27 00:01:25,565 --> 00:01:30,240 >> Så for å få på det, kan jeg rett og slett spesifisere ARV brakett jeg å 28 00:01:30,240 --> 00:01:32,050 får i-te argument. 29 00:01:32,050 --> 00:01:36,140 Og så kan jeg dykke i ett nivå dypere og gjøre en sekundær indeks over 30 00:01:36,140 --> 00:01:40,420 brakett j, sluttparentes, semikolon, spar. 31 00:01:40,420 --> 00:01:43,610 Og la oss nå samle og kjøre dette programmet. 32 00:01:43,610 --> 00:01:46,630 >> Gjør ARGV2 - 33 00:01:46,630 --> 00:01:48,440 ikke helt hva jeg hadde ventet. 34 00:01:48,440 --> 00:01:50,740 La oss bla opp til den første av disse feilmeldingene. 35 00:01:50,740 --> 00:01:54,540 Og i rødt her, ser vi feil, implisitt erklære bibliotek funksjon 36 00:01:54,540 --> 00:01:56,290 strlen med type - 37 00:01:56,290 --> 00:01:57,380 oh, vent litt. 38 00:01:57,380 --> 00:02:00,340 Dette er første gang jeg har brukt strlen, og jeg ikke hadde forutsett 39 00:02:00,340 --> 00:02:04,970 som ønsker det i starten, så jeg ikke inkluderte topptekstfilen som erklærer 40 00:02:04,970 --> 00:02:06,290 en streng lengde funksjon. 41 00:02:06,290 --> 00:02:09,419 >> Så på toppen av filen min, tilbakekalling, har jeg 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 seg, og jeg vet dette fra lese dokumentasjonen, at jeg trenger 44 00:02:14,500 --> 00:02:18,320 en tredje header-fil hvis jeg, ja, ønsker å bruke strlen-funksjonen. 45 00:02:18,320 --> 00:02:22,760 At funksjonen er erklært i string.h. 46 00:02:22,760 --> 00:02:25,230 >> La oss lagre filen på nytt, kompilere og kjøre. 47 00:02:25,230 --> 00:02:32,360 48 00:02:32,360 --> 00:02:35,570 Og denne gangen, gjør vi ikke bare se hver av argumentene. 49 00:02:35,570 --> 00:02:40,470 Vi i stedet se hver av argumentene ett tegn om gangen. 50 00:02:40,470 --> 00:02:43,165