[Powered by Google Translate] [명령 줄 인수]
[크리스토퍼 바돌로매 - 하버드 대학교 (Harvard University)]
[- CS50.TV이 CS50입니다]
프로그램의 유용한 기능은 사용자 입력을 허용하는 것입니다.
지금까지, 우리는 CS50 라이브러리에서 일부 기능을 탐색 한
같은 사용자 입력을 허용하는 것은 "문자열을"
응용 프로그램을 실행하는 동안 즉 문자열, 사용자에게 메시지를 표시합니다.
>> 귀하의 프로그램 입력을 제공하려는하지만, 경우가 있습니다
실제로 실행되기 전에.
이 방법, 당신은 사용자로부터 추가 정보를 문의 할 필요가 없습니다
간단한 작업을 실행하는 동안.
예를 들어, 뮤직 비디오 또는 UNIX에서 이동 명령을보세요.
이 명령은 사용자가 특정 위치에서 다른 위치로 파일을 이동할 수 있습니다.
매뉴얼 페이지에 따르면, 뮤직 비디오는 두 명령 줄 인수를 허용 :
해당 파일이 이동되고 있으며 위치는 파일로 이동하고 있습니다.
따라서이 예는 두 개의 인수와 명령이 있습니다.
그럼 우리는이 명령 줄 인수를 활용하기 위해 C 프로그램을 말합니까?
>> 글쎄, 우리 모두가 C 프로그램에서 사용하는 기본은, 비밀이 밝혀집니다.
argc와 argv가 : 기본 두 개의 매개 변수를 사용할 수 있습니다.
의 내용에 이상 가자.
>> 인자 개수를 의미 첫 번째 매개 변수 argc,
정수의 데이터 유형이 있습니다.
argc 매개 변수는 명령을 포함 인자의 수를 포함합니다.
우리의 이동 명령에서, 우리는 두 개의 인수가 표시했지만,
argc의 값은 3입니다.
인수 벡터를 의미 두 번째 매개 변수, 변수는 argv,
문자열로 연결되는 문자 포인터의 배열입니다.
>> 이것은 변수는 argv의 각 요소는, 제로에서 시작을 의미합니다
명령과 인수를 포함하고 있습니다.
예를 들어, 변수는 argv [0], 그 말은, argv가 제로를 참조합니다
항상 실행되고있는 명령이 포함됩니다 -
이 경우, MV.
변수는 argv [1] file.txt 첫 번째 인수를 포함합니다
그리고 변수는 argv [2] 두 번째 인수를 포함 할 것입니다 ~ / cs50 /.
변수는 argv의 마지막 인수는 항상 null이됩니다.
그럼이 명령 줄 인수를 구현 보자.
이전 연습에서 우리는 메인의 매개 변수로, 아무 의미가없는, 무효을 배치.
그러나, 순서에 우리는 명령 줄 인수를 사용하는 방법에 대한
우리는 주요 INT argc, 숯불 * 변수는 argv는 []의 무효 및 장소 내부를 제거해야합니다.
자, 인수입니다 변수는 argv에서 전체 요소를 액세스하려면
당신은 단순히 같은 배열을 통해 반복, 또는 루프 할 수 있습니다.
따라서 내부 주의 몸에, 우리는 가서 루프에 대한을 입력 할거야 :
에 대한 (INT I = 0; 나는 <argc, 나는 + +).
>> 우리는 코드 한 줄을 실행하기 때문에 우리는 여기서 둥근 브레이스 필요하지 않습니다
이 루프의 본문 내에 있습니다.
우리는 가서 한 번 탭을 맞는다
그리고 printf 입력 ( "변수는 argv [% d 개] 정수 값을 표현하기 위해,
새 줄 문자 다음, 문자열, % s입니다.
그런 다음 우리는 루프의 현재 반복을위한 printf 전을 제공합니다
그리고 변수는 argv [I] 현재 명령 줄 인수의 문자열 표현하십시오.
우리는 두 개의 인수와 함께 실행하면, 우리는 터미널에 표시되는 인수를 볼 수 있습니다.
이전 우리는 변수는 argv는 숯불 포인터의 배열을 개최했다.
>> 이 경우 그래서, 어떻게 다음 각 인수의 개별 문자에 액세스하려면 어떻게해야하나요?
예를 들면, 첫 번째 인수의 특정 문자를 찾아 원한다면 무엇입니까?
글쎄, 대답은 우리가 중첩 된 루프를 적용해야한다는 것입니다
그 다음 인수 문자열에있는 요소의 각을 반복합니다.
여러분이 할 방법입니다.
>> 첫째, 우리는 example2.c의 사본을 만들려고하고 있습니다.
그런 다음 내부 루프에 대한 첫 번째의,
우리는 루프에 대한 추가를 추가 할거야.
따라서에 대한 (INT J = 0, N = 나 strlen (argv가 [I]),
이는 다음 우리에게 현재 인수의 길이를 제공합니다
, J <N, J + +)
우리는 각 문자의 위치를​​ 인쇄 할거야
printf를 사용하여 현재 인수의 안쪽.
따라서 printf ( "변수는 argv [% D], 현재 인수의 색인을 표현하기 위해,
그런 다음 [% D] 다시 한 번, 현재 논쟁의 현재 문자를 표현하기 위해,
입니다 : %의 C, 인수의 현재 문자를.
마지막으로, 우리는 외부 루프의 인덱스와 printf 제공, 전,
다음 내부 루프의 인덱스.
>> 그리고 마지막 인수는 printf 제공하는 인수의 실제 문자 일입니다
명령 줄에서.
자, 내가 문자열의 길이를 얻기 위해 문자열 함수 나 strlen을 사용했기 때문에,
나는 또한 포함의 상단에 string.h 라이브러리를 추가해야합니다.
그럼,해야, 우리는 갈거야, 그리고 stdio.h에서, 우리는 할 수있는 것
# 있습니다.
>> 자, 컴파일하고 실행하고 그것을 실제 인수를 제공 보자.
>> 우리가 보듯이, 우리는 이제 인수의 각 문자의 정확한 위치를 갖추고 있습니다.
그래서 그런 거예요. 나는 크리스토퍼 바돌로매입니다,이 CS50입니다.
[CS50.TV]