1 00:00:00,000 --> 00:00:00,560 2 00:00:00,560 --> 00:00:02,460 >> David J. MALAN: Weźmy rzeczy jeden krok dalej, teraz. 3 00:00:02,460 --> 00:00:05,450 Załóżmy, że nie tylko chcą wydrukować wszystkie mój program jest 4 00:00:05,450 --> 00:00:06,630 Argumenty wiersza poleceń. 5 00:00:06,630 --> 00:00:10,490 Ale zamiast tego, aby wydrukować wszystkie Poszczególne znaki w każdym z 6 00:00:10,490 --> 00:00:14,060 moje argumenty wiersza poleceń, po jednej linii, tak, że działa to na 7 00:00:14,060 --> 00:00:17,490 Program, po prostu zobaczyć strumień Znaki na ekranie, że 8 00:00:17,490 --> 00:00:20,700 zbiorowo są z mojej sekwencji z argumentów wiersza poleceń. 9 00:00:20,700 --> 00:00:21,980 >> Cóż, jak mogę to zrobić? 10 00:00:21,980 --> 00:00:26,540 Mogę zachować w stanie nienaruszonym z przed mojego pętli przy czym ja iteracyjny z I aż 11 00:00:26,540 --> 00:00:30,060 ARGC w celu integracji na same argumenty wiersza poleceń. 12 00:00:30,060 --> 00:00:34,460 Ale teraz, w ramach każdej iteracji, że pętli, muszę teraz iteracyjne nad każdym 13 00:00:34,460 --> 00:00:38,550 znaków lub znaków w określonym ciągu. 14 00:00:38,550 --> 00:00:40,620 Tak, aby to zrobić, muszę jeszcze jedną pętlę. 15 00:00:40,620 --> 00:00:42,090 >> Dodajmy, że. 16 00:00:42,090 --> 00:00:46,890 dla int, nazwijmy to j, jest równa 0. 17 00:00:46,890 --> 00:00:49,980 Teraz będę musiał integrować aż do długości 18 00:00:49,980 --> 00:00:52,310 aktualny ciąg w ARGV. 19 00:00:52,310 --> 00:00:55,910 Więc pozwól mi dać sobie inny lokalny zmienna, my to nazywamy n, i ustawić 20 00:00:55,910 --> 00:01:00,120 że równy długości łańcucha z Prąd argumentem, który ma być 21 00:01:00,120 --> 00:01:04,230 znaleźć w przedziale ARGV i średnik. 22 00:01:04,230 --> 00:01:08,500 >> Pozwól mi teraz iteracji od j do góry aż do n, a następnie 23 00:01:08,500 --> 00:01:10,400 przyrost po każdej iteracji. 24 00:01:10,400 --> 00:01:13,850 Załóżmy teraz wydrukować indywidualne znaków na ekranie. 25 00:01:13,850 --> 00:01:21,920 Printf% c tym razem, a następnie nowy linia, blisko cytat, przecinek, i teraz 26 00:01:21,920 --> 00:01:25,565 potrzebuję znaku j-tego w i-tego argumentu. 27 00:01:25,565 --> 00:01:30,240 >> Tak, aby uzyskać na to, że może po prostu określić ARV i do wspornika 28 00:01:30,240 --> 00:01:32,050 uzyskać i-tego argumentu. 29 00:01:32,050 --> 00:01:36,140 A potem mogę nurkować głębiej w jednym poziomie i zrobić indeks wtórny 30 00:01:36,140 --> 00:01:40,420 Uchwyt j, blisko nawias, średnik, Zapisz. 31 00:01:40,420 --> 00:01:43,610 I niech teraz skompilować i uruchomić ten program. 32 00:01:43,610 --> 00:01:46,630 >> Dodać ARGV2 - 33 00:01:46,630 --> 00:01:48,440 Nie całkiem to, czego się spodziewałem. 34 00:01:48,440 --> 00:01:50,740 Miejmy przewiń do pierwszego z tych komunikatów o błędach. 35 00:01:50,740 --> 00:01:54,540 I tu czerwony, widzimy błąd, niejawnie deklarowania funkcji biblioteki 36 00:01:54,540 --> 00:01:56,290 strlen z typ - 37 00:01:56,290 --> 00:01:57,380 Och, poczekaj. 38 00:01:57,380 --> 00:02:00,340 To jest pierwszy raz użyłem strlen, i nie przewidujemy 39 00:02:00,340 --> 00:02:04,970 chce go w pierwszym, więc nie obejmują plik nagłówka, który deklaruje 40 00:02:04,970 --> 00:02:06,290 Funkcja długość łańcucha. 41 00:02:06,290 --> 00:02:09,419 >> Więc na początku mojego pliku, Przypomnijmy, mam CS50.h. 42 00:02:09,419 --> 00:02:11,080 Mam standardowy io.h. 43 00:02:11,080 --> 00:02:14,500 Ale okazuje się, i wiem to z czytanie dokumentacji, że muszę 44 00:02:14,500 --> 00:02:18,320 trzeci nagłówek pliku, jeśli rzeczywiście Aby korzystać z funkcji strlen. 45 00:02:18,320 --> 00:02:22,760 Że funkcja jest zadeklarowana w . 46 00:02:22,760 --> 00:02:25,230 >> Załóżmy ponownie zapisać plik, skompilować i uruchomić. 47 00:02:25,230 --> 00:02:32,360 48 00:02:32,360 --> 00:02:35,570 I tym razem nie tylko zobaczyć każdy z argumentów. 49 00:02:35,570 --> 00:02:40,470 My zamiast zobaczyć każdy z argumentów jeden znak na raz. 50 00:02:40,470 --> 00:02:43,165