1 00:00:00,000 --> 00:00:00,560 2 00:00:00,560 --> 00:00:02,460 >> David J. MALAN: Să luăm lucrurile un pas mai departe, acum. 3 00:00:02,460 --> 00:00:05,450 Să presupunem că nu vreau doar pentru a imprima toate din programul meu 4 00:00:05,450 --> 00:00:06,630 argumente în linia de comandă. 5 00:00:06,630 --> 00:00:10,490 Dar eu, în schimb, doriți să imprimați toate a caractere individuale din fiecare dintre 6 00:00:10,490 --> 00:00:14,060 argumentele mele de linie de comandă, unul pe linie, astfel încât pe care rulează acest 7 00:00:14,060 --> 00:00:17,490 Programul, văd pur și simplu un flux de caracterele de pe ecran care 8 00:00:17,490 --> 00:00:20,700 colectiv sunt din secvență mea de argumente în linia de comandă. 9 00:00:20,700 --> 00:00:21,980 >> Ei bine, cum pot face acest lucru? 10 00:00:21,980 --> 00:00:26,540 Eu pot păstra intacte bucla mea de înainte prin care am iterative de la i până 11 00:00:26,540 --> 00:00:30,060 Argc, în scopul de a integra peste argumente în linia de comandă propriu-zise. 12 00:00:30,060 --> 00:00:34,460 Dar acum, în fiecare iterație de care buclă, am nevoie pentru a repeta acum peste fiecare 13 00:00:34,460 --> 00:00:38,550 de caractere sau caractere într-un șir specific. 14 00:00:38,550 --> 00:00:40,620 Deci, pentru a face acest lucru, am nevoie de mai mult de o buclă. 15 00:00:40,620 --> 00:00:42,090 >> Să adăugăm că. 16 00:00:42,090 --> 00:00:46,890 pentru Int, să-i zicem j, este egal cu 0. 17 00:00:46,890 --> 00:00:49,980 Acum am de gând să necesitatea de a integra până la lungimea 18 00:00:49,980 --> 00:00:52,310 șir de curent în ARGV. 19 00:00:52,310 --> 00:00:55,910 Deci, lasă-mă să mă dau un alt nivel local variabilă, vom numi n, și a stabilit 20 00:00:55,910 --> 00:01:00,120 care egală cu lungimea șirului a argument curent, care va fi 21 00:01:00,120 --> 00:01:04,230 găsite în ARGV suport i virgulă. 22 00:01:04,230 --> 00:01:08,500 >> Permiteți-mi acum repeta de la j până până urmat n de o 23 00:01:08,500 --> 00:01:10,400 incrementa la fiecare iterație. 24 00:01:10,400 --> 00:01:13,850 Să acum imprima individului caracterele de pe ecran. 25 00:01:13,850 --> 00:01:21,920 Printf% c acest timp, urmată de o nouă linie, citat de aproape, virgulă, iar acum am 26 00:01:21,920 --> 00:01:25,565 Trebuie caracterul j în argumentul-i-lea. 27 00:01:25,565 --> 00:01:30,240 >> Deci, pentru a ajunge la asta, eu pot pur și simplu specifica suport ARV i la 28 00:01:30,240 --> 00:01:32,050 obține argumentul i-lea. 29 00:01:32,050 --> 00:01:36,140 Și apoi m-am pot arunca cu capul într-un nivel mai profund și de a face un index secundar de 30 00:01:36,140 --> 00:01:40,420 j suport, aproape paranteză, punct și virgulă, Salvare. 31 00:01:40,420 --> 00:01:43,610 Și să acum compila și rula acest program. 32 00:01:43,610 --> 00:01:46,630 >> Face ARGV2 - 33 00:01:46,630 --> 00:01:48,440 nu destul de ceea ce mă așteptam. 34 00:01:48,440 --> 00:01:50,740 Să derulați până la primul dintre aceste mesaje de eroare. 35 00:01:50,740 --> 00:01:54,540 Și în roșu aici, vedem de eroare, implicit, declararea funcție de bibliotecă 36 00:01:54,540 --> 00:01:56,290 strlen de tip - 37 00:01:56,290 --> 00:01:57,380 oh, așteaptă un minut. 38 00:01:57,380 --> 00:02:00,340 Aceasta este prima dată când l-am folosit strlen, iar eu nu am anticipat 39 00:02:00,340 --> 00:02:04,970 doresc o la început, așa că nu a inclus fișierul antet care declară 40 00:02:04,970 --> 00:02:06,290 o funcție de lungime șir. 41 00:02:06,290 --> 00:02:09,419 >> Deci, în partea de sus a fișierului mea, amintesc, am CS50.h. 42 00:02:09,419 --> 00:02:11,080 Am io.h. standard, 43 00:02:11,080 --> 00:02:14,500 Dar se pare, și eu știu acest lucru de la citind documentația, că am nevoie de 44 00:02:14,500 --> 00:02:18,320 un fișier antet al treilea dacă, într-adevăr, doriți să folosiți funcția strlen. 45 00:02:18,320 --> 00:02:22,760 Această funcție este declarată în string.h. 46 00:02:22,760 --> 00:02:25,230 >> Să salvați din nou fișierul, compila, și a alerga. 47 00:02:25,230 --> 00:02:32,360 48 00:02:32,360 --> 00:02:35,570 Și de data asta, ne-am face nu doar a se vedea fiecare dintre argumentele. 49 00:02:35,570 --> 00:02:40,470 Ne vedem în loc de fiecare dintre argumentele un caracter la un moment dat. 50 00:02:40,470 --> 00:02:43,165