![[CS50] 배열 - 명령행 인자](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUv41K%2FbtsHWdjpqhZ%2FkZIox0gRYzKFpb71YoIiek%2Fimg.jpg)
main
함수 자세히 들여다보기
지금까지 많이 사용해온 main
함수를 보다 자세히 살펴볼 필요가 있다.
main
함수도 그 형태를 보면 하나의 함수임을 알 수 있다.
이제 기계적으로 void
를 입력하는 대신, 아래 코드와 같이 argc
와 argv
를 정의해보도록 한다.
#include <cs50.h>
#include <stdio.h>
int main(int argc, string argv[])
{
if (argc == 2)
{
printf("hello, %s\n", argv[1]);
}
else
{
printf("hello, world\n");
}
}
여기서 첫 번째 변수 argc
는 main
함수가 받게 될 입력의 개수를 나타낸다.
그리고 argv[]
는 그 입력이 포함된 배열이다.
프로그램을 명령행에서 실행하므로 입력은 문자열로 주어진다. 따라서 argv[]
는 문자열 배열이 된다.
argc
와 argv
의 역할
argc
(argument count): 명령행 인자의 개수를 나타내고 프로그램 이름도 포함되므로 최소 값은 1이다.argv
(argument vector): 명령행 인자들을 문자열 배열로 저장한다.argv[0]
는 프로그램의 이름을 저장하고 그 이후의 요소들은 명령행에서 입력된 인자들을 순서대로 저장한다.
예를 들어, 위 프로그램을 "arg.c"라는 이름으로 저장하고 컴파일한 후 ./arg
로 실행하면 "hello, world"가 출력된다. 이는 명령행 인자로 주어진 값이 프로그램 이름 하나밖에 없기 때문이다.
그러나 ./arg David
로 실행하면 "hello, David"가 출력된다.
명령행 인자로 "David"가 추가로 입력되었고 따라서 argc
는 2, argv[1]
은 "David"가 된다.
명령행 인자 예제
다음은 명령행 인자를 처리하는 예제이다.
#include <cs50.h>
#include <stdio.h>
int main(int argc, string argv[])
{
// 입력 인자가 2개일 때
if (argc == 2)
{
printf("hello, %s\n", argv[1]);
}
// 입력 인자가 2개가 아닐 때
else
{
printf("hello, world\n");
}
}
이 프로그램은 명령행 인자를 받아서 인자가 2개일 경우에는 두 번째 인자를 출력하고 그렇지 않으면 "hello, world"를 출력한다.
명령행 인자의 첫 번째 인자는 항상 프로그램 이름이기 때문에 인자가 2개일 때 두 번째 인자가 존재하게 된다.
이처럼 main
함수의 구조와 역할을 이해하고 다양한 입력을 처리할 수 있는 프로그램을 작성할 수 있다.
References
모두를 위한 컴퓨터 과학 (CS50 2019)
부스트코스 무료 강의
www.boostcourse.org
'CSE > CS 기초' 카테고리의 다른 글
[CS50] 알고리즘 - 알고리즘 표기법 (1) | 2024.06.13 |
---|---|
[CS50] 알고리즘 - 선형 검색, 이진 검색 (1) | 2024.06.13 |
[CS50] 배열 - 문자열의 활용 (1) | 2024.06.13 |
[CS50] 배열 - 문자열과 배열 (0) | 2024.06.13 |
[CS50] 배열 - 배열(2) (1) | 2024.06.13 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!