1 00:00:00,000 --> 00:00:00,560 2 00:00:00,560 --> 00:00:02,460 >> David J. MALAN: Kom ons neem dinge 'n stap verder, nou. 3 00:00:02,460 --> 00:00:05,450 Veronderstel dat ek net nie wil al my program se te druk 4 00:00:05,450 --> 00:00:06,630 command line argumente. 5 00:00:06,630 --> 00:00:10,490 Maar ek, in plaas daarvan, wil almal van die te druk individuele karakters in elk van 6 00:00:10,490 --> 00:00:14,060 my command line argumente, een per lyn, sodat op die loop van hierdie 7 00:00:14,060 --> 00:00:17,490 program, sien ek net 'n stroom van karakters op die skerm wat 8 00:00:17,490 --> 00:00:20,700 gesamentlik is uit my volgorde van command line argumente. 9 00:00:20,700 --> 00:00:21,980 >> Wel, hoe kan ek dit doen? 10 00:00:21,980 --> 00:00:26,540 Ek kan hou ongeskonde my lus voor waardeur ek iteratiewe van i tot 11 00:00:26,540 --> 00:00:30,060 ARGC om te integreer oor die command line argumente self. 12 00:00:30,060 --> 00:00:34,460 Maar nou, in elke iterasie van daardie lus, ek moet nou Itereer oor elke 13 00:00:34,460 --> 00:00:38,550 van die karakters of karakters in 'n spesifieke string. 14 00:00:38,550 --> 00:00:40,620 So om dit te doen, moet ek nog 'n lus. 15 00:00:40,620 --> 00:00:42,090 >> Kom ons byvoeg dat. 16 00:00:42,090 --> 00:00:46,890 vir int, kom ons noem dit j, is gelyk aan 0. 17 00:00:46,890 --> 00:00:49,980 Nou gaan ek nodig het om te integreer tot die lengte van die 18 00:00:49,980 --> 00:00:52,310 huidige string in bevat SPASIES. 19 00:00:52,310 --> 00:00:55,910 So laat my gee myself 'n ander plaaslike veranderlike, sal ons dit noem n, en stel 20 00:00:55,910 --> 00:01:00,120 wat gelyk is aan die lengte van die string huidige argument, wat gaan wees 21 00:01:00,120 --> 00:01:04,230 gevind in hakies bevat SPASIES i kommapunt. 22 00:01:04,230 --> 00:01:08,500 >> Laat my nou Itereer van J up totdat n gevolg deur 'n 23 00:01:08,500 --> 00:01:10,400 inkrementeer op elke iterasie. 24 00:01:10,400 --> 00:01:13,850 Kom ons nou druk die individu karakters op die skerm. 25 00:01:13,850 --> 00:01:21,920 Printf% c hierdie tyd, gevolg deur 'n nuwe lyn, naby quote, komma, en nou is ek 26 00:01:21,920 --> 00:01:25,565 nodig het om die j-de karakter in die i-de argument. 27 00:01:25,565 --> 00:01:30,240 >> So te kry op daardie, ek kan eenvoudig spesifiseer ARV bracket ek te 28 00:01:30,240 --> 00:01:32,050 kry die i-de argument. 29 00:01:32,050 --> 00:01:36,140 En dan het ek kan duik in een vlak dieper en doen 'n sekondêre indeks van 30 00:01:36,140 --> 00:01:40,420 bracket j, naby hakies, kommapunt, Save. 31 00:01:40,420 --> 00:01:43,610 En laat ons nou saam te stel en hierdie program. 32 00:01:43,610 --> 00:01:46,630 >> Maak ARGV2 - 33 00:01:46,630 --> 00:01:48,440 nie heeltemal wat ek verwag het. 34 00:01:48,440 --> 00:01:50,740 Kom ons blaai na die eerste van hierdie fout boodskappe. 35 00:01:50,740 --> 00:01:54,540 En hier rooi, sien ons foute, onvoorwaardelik verklaar biblioteek funksie 36 00:01:54,540 --> 00:01:56,290 strlen met tipe - 37 00:01:56,290 --> 00:01:57,380 O, wag 'n minuut. 38 00:01:57,380 --> 00:02:00,340 Dit is die eerste keer wat ek gebruik StrLen, en ek het nie verwag dat 39 00:02:00,340 --> 00:02:04,970 wil dit op die eerste, so ek het nie ' die kop lêer wat verklaar 40 00:02:04,970 --> 00:02:06,290 'n string lengte funksie. 41 00:02:06,290 --> 00:02:09,419 >> So aan die bokant van my lêer, Onthou, ek het CS50.h. 42 00:02:09,419 --> 00:02:11,080 Ek het die standaard io.h. 43 00:02:11,080 --> 00:02:14,500 Maar dit blyk uit, en ek weet dit uit die lees van die dokumentasie, wat ek nodig het 44 00:02:14,500 --> 00:02:18,320 'n derde kop lêer as ek, ja, wil die StrLen funksie te gebruik. 45 00:02:18,320 --> 00:02:22,760 Dit funksie is string.h verklaar. 46 00:02:22,760 --> 00:02:25,230 >> Kom ons weer stoor die lêer, stel, en hardloop. 47 00:02:25,230 --> 00:02:32,360 48 00:02:32,360 --> 00:02:35,570 En hierdie keer, doen ons nie net sien elkeen van die argumente. 49 00:02:35,570 --> 00:02:40,470 Ons plaas sien elkeen van die argumente een karakter op 'n tyd. 50 00:02:40,470 --> 00:02:43,165