1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [명령 줄 인수] 2 00:00:02,000 --> 00:00:04,000 [크리스토퍼 바돌로매 - 하버드 대학교 (Harvard University)] 3 00:00:04,000 --> 00:00:07,000 [- CS50.TV이 CS50입니다] 4 00:00:07,000 --> 00:00:11,000 프로그램의 유용한 기능은 사용자 입력을 허용하는 것입니다. 5 00:00:11,000 --> 00:00:15,000 지금까지, 우리는 CS50 라이브러리에서 일부 기능을 탐색 한 6 00:00:15,000 --> 00:00:18,000 같은 사용자 입력을 허용하는 것은 "문자열을" 7 00:00:18,000 --> 00:00:23,000 응용 프로그램을 실행하는 동안 즉 문자열, 사용자에게 메시지를 표시합니다. 8 00:00:23,000 --> 00:00:28,000 >> 귀하의 프로그램 입력을 제공하려는하지만, 경우가 있습니다 9 00:00:28,000 --> 00:00:30,000 실제로 실행되기 전에. 10 00:00:30,000 --> 00:00:34,000 이 방법, 당신은 사용자로부터 추가 정보를 문의 할 필요가 없습니다 11 00:00:34,000 --> 00:00:38,000 간단한 작업을 실행하는 동안. 12 00:00:38,000 --> 00:00:42,000 예를 들어, 뮤직 비디오 또는 UNIX에서 이동 명령을보세요. 13 00:00:42,000 --> 00:00:49,000 이 명령은 사용자가 특정 위치에서 다른 위치로 파일을 이동할 수 있습니다. 14 00:00:49,000 --> 00:00:55,000 매뉴얼 페이지에 따르면, 뮤직 비디오는 두 명령 줄 인수를 허용 : 15 00:00:55,000 --> 00:01:00,000 해당 파일이 이동되고 있으며 위치는 파일로 이동하고 있습니다. 16 00:01:00,000 --> 00:01:06,000 따라서이 예는 두 개의 인수와 명령이 있습니다. 17 00:01:06,000 --> 00:01:14,000 그럼 우리는이 명령 줄 인수를 활용하기 위해 C 프로그램을 말합니까? 18 00:01:14,000 --> 00:01:20,000 >> 글쎄, 우리 모두가 C 프로그램에서 사용하는 기본은, 비밀이 밝혀집니다. 19 00:01:20,000 --> 00:01:26,000 argc와 argv가 : 기본 두 개의 매개 변수를 사용할 수 있습니다. 20 00:01:26,000 --> 00:01:28,000 의 내용에 이상 가자. 21 00:01:28,000 --> 00:01:33,000 >> 인자 개수를 의미 첫 번째 매개 변수 argc, 22 00:01:33,000 --> 00:01:36,000 정수의 데이터 유형이 있습니다. 23 00:01:36,000 --> 00:01:42,000 argc 매개 변수는 명령을 포함 인자의 수를 포함합니다. 24 00:01:42,000 --> 00:01:47,000 우리의 이동 명령에서, 우리는 두 개의 인수가 표시했지만, 25 00:01:47,000 --> 00:01:50,000 argc의 값은 3입니다. 26 00:01:50,000 --> 00:01:56,000 인수 벡터를 의미 두 번째 매개 변수, 변수는 argv, 27 00:01:56,000 --> 00:02:01,000 문자열로 연결되는 문자 포인터의 배열입니다. 28 00:02:01,000 --> 00:02:06,000 >> 이것은 변수는 argv의 각 요소는, 제로에서 시작을 의미합니다 29 00:02:06,000 --> 00:02:09,000 명령과 인수를 포함하고 있습니다. 30 00:02:09,000 --> 00:02:16,000 예를 들어, 변수는 argv [0], 그 말은, argv가 제로를 참조합니다 31 00:02:16,000 --> 00:02:20,000 항상 실행되고있는 명령이 포함됩니다 - 32 00:02:20,000 --> 00:02:22,000 이 경우, MV. 33 00:02:22,000 --> 00:02:28,000 변수는 argv [1] file.txt 첫 번째 인수를 포함합니다 34 00:02:28,000 --> 00:02:37,000 그리고 변수는 argv [2] 두 번째 인수를 포함 할 것입니다 ~ / cs50 /. 35 00:02:37,000 --> 00:02:42,000 변수는 argv의 마지막 인수는 항상 null이됩니다. 36 00:02:42,000 --> 00:02:46,000 그럼이 명령 줄 인수를 구현 보자. 37 00:02:46,000 --> 00:02:53,000 이전 연습에서 우리는 메인의 매개 변수로, 아무 의미가없는, 무효을 배치. 38 00:02:53,000 --> 00:02:57,000 그러나, 순서에 우리는 명령 줄 인수를 사용하는 방법에 대한 39 00:02:57,000 --> 00:03:12,000 우리는 주요 INT argc, 숯불 * 변수는 argv는 []의 무효 및 장소 내부를 제거해야합니다. 40 00:03:12,000 --> 00:03:17,000 자, 인수입니다 변수는 argv에서 전체 요소를 액세스하려면 41 00:03:17,000 --> 00:03:21,000 당신은 단순히 같은 배열을 통해 반복, 또는 루프 할 수 있습니다. 42 00:03:21,000 --> 00:03:27,000 따라서 내부 주의 몸에, 우리는 가서 루프에 대한을 입력 할거야 : 43 00:03:27,000 --> 00:03:37,000 에 대한 (INT I = 0; 나는 00:03:41,000 >> 우리는 코드 한 줄을 실행하기 때문에 우리는 여기서 둥근 브레이스 필요하지 않습니다 45 00:03:41,000 --> 00:03:44,000 이 루프의 본문 내에 있습니다. 46 00:03:44,000 --> 00:03:47,000 우리는 가서 한 번 탭을 맞는다 47 00:03:47,000 --> 00:03:57,000 그리고 printf 입력 ( "변수는 argv [% d 개] 정수 값을 표현하기 위해, 48 00:03:57,000 --> 00:04:06,000 새 줄 문자 다음, 문자열, % s입니다. 49 00:04:06,000 --> 00:04:12,000 그런 다음 우리는 루프의 현재 반복을위한 printf 전을 제공합니다 50 00:04:12,000 --> 00:04:18,000 그리고 변수는 argv [I] 현재 명령 줄 인수의 문자열 표현하십시오. 51 00:04:18,000 --> 00:04:25,000 우리는 두 개의 인수와 함께 실행하면, 우리는 터미널에 표시되는 인수를 볼 수 있습니다. 52 00:04:34,000 --> 00:04:38,000 이전 우리는 변수는 argv는 숯불 포인터의 배열을 개최했다. 53 00:04:38,000 --> 00:04:45,000 >> 이 경우 그래서, 어떻게 다음 각 인수의 개별 문자에 액세스하려면 어떻게해야하나요? 54 00:04:45,000 --> 00:04:51,000 예를 들면, 첫 번째 인수의 특정 문자를 찾아 원한다면 무엇입니까? 55 00:04:51,000 --> 00:04:55,000 글쎄, 대답은 우리가 중첩 된 루프를 적용해야한다는 것입니다 56 00:04:55,000 --> 00:04:59,000 그 다음 인수 문자열에있는 요소의 각을 반복합니다. 57 00:04:59,000 --> 00:05:02,000 여러분이 할 방법입니다. 58 00:05:02,000 --> 00:05:10,000 >> 첫째, 우리는 example2.c의 사본을 만들려고하고 있습니다. 59 00:05:10,000 --> 00:05:13,000 그런 다음 내부 루프에 대한 첫 번째의, 60 00:05:13,000 --> 00:05:15,000 우리는 루프에 대한 추가를 추가 할거야. 61 00:05:15,000 --> 00:05:28,000 따라서에 대한 (INT J = 0, N = 나 strlen (argv가 [I]), 62 00:05:28,000 --> 00:05:32,000 이는 다음 우리에게 현재 인수의 길이를 제공합니다 63 00:05:32,000 --> 00:05:39,000 , J 00:05:43,000 우리는 각 문자의 위치를​​ 인쇄 할거야 65 00:05:43,000 --> 00:05:47,000 printf를 사용하여 현재 인수의 안쪽. 66 00:05:47,000 --> 00:05:57,000 따라서 printf ( "변수는 argv [% D], 현재 인수의 색인을 표현하기 위해, 67 00:05:57,000 --> 00:06:05,000 그런 다음 [% D] 다시 한 번, 현재 논쟁의 현재 문자를 표현하기 위해, 68 00:06:05,000 --> 00:06:13,000 입니다 : %의 C, 인수의 현재 문자를. 69 00:06:13,000 --> 00:06:20,000 마지막으로, 우리는 외부 루프의 인덱스와 printf 제공, 전, 70 00:06:20,000 --> 00:06:22,000 다음 내부 루프의 인덱스. 71 00:06:22,000 --> 00:06:28,000 >> 그리고 마지막 인수는 printf 제공하는 인수의 실제 문자 일입니다 72 00:06:28,000 --> 00:06:31,000 명령 줄에서. 73 00:06:31,000 --> 00:06:37,000 자, 내가 문자열의 길이를 얻기 위해 문자열 함수 나 strlen을 사용했기 때문에, 74 00:06:37,000 --> 00:06:43,000 나는 또한 포함의 상단에 string.h 라이브러리를 추가해야합니다. 75 00:06:43,000 --> 00:06:50,000 그럼,해야, 우리는 갈거야, 그리고 stdio.h에서, 우리는 할 수있는 것 76 00:06:50,000 --> 00:06:57,000 # 있습니다. 77 00:06:57,000 --> 00:07:02,000 >> 자, 컴파일하고 실행하고 그것을 실제 인수를 제공 보자. 78 00:07:09,000 --> 00:07:18,000 >> 우리가 보듯이, 우리는 이제 인수의 각 문자의 정확한 위치를 갖추고 있습니다. 79 00:07:18,000 --> 00:07:23,000 그래서 그런 거예요. 나는 크리스토퍼 바돌로매입니다,이 CS50입니다. 80 00:07:23,000 --> 00:07:26,000 [CS50.TV]