```
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int age = atoi(argv[1]);
int num = 0;
char role[3][10] = {'일반','청소년','어린이'};
int prices[] = { 1250, 720, 450 };
if ( age >= 19 )
{
num = 0;
}
else if ( age >= 13 )
{
num = 1;
}
else
{
num = 2;
}
printf ( "%s(%d세): %d원입니다.", role[num], age, prices[num]);
return 0;
}
```
강의 보면서 열심히 공부 중 이지만 아직 모르는게 너무 많네요 ㅎㅎ 열심히 하겠습니다.
늘 친절한 답변 감사합니다.
지하철 요금 조건문에 관련된 문제 입니다.
위에 코드처럼 선생님 코드와 똑같게 하였는데 DEV에서는 결과가 (0세): 450원입니다. 라고 나오네요
클라우드스터딩 홈페이지에 도전에서는 답이 잘 나오는데 왜 그럴까요..
이 홈페이지에서는 입력값을 따로 입력하는 곳이 있어서 실행이 되는 것 같은데
DEV 같은 곳에서는 입력값을 어떤식으로 입력 해야하는 걸까요?
또 다른 질문들이 있습니다.
- int main(int argc, char* argv[]) 이 부분에 int argc, char* argv[]가 무엇인가요?
- int age = atoi(argv[1]); 이 부분에서 argv[1]가 의미하는 것이 무엇인가요?
- char role[3][10] = {'일반','청소년','어린이'}; 이 부분에서 [10]은 왜 있나요?
- int prices[] = { 1250, 720, 450 }; 여기서 []는 왜 안에 숫자를 안 넣는 건 가요?
너무 질문을 많이 한 것 같네요 ㅠㅠ
클라우드 스터딩은 제가 본 강의 중에 최고입니다.
항상 이해 잘 되도록 친절하게 설명해주셔서 감사합니다.
열심히 하겠습니다!
sehongpark님의 답변
## 답변
입력값 `argv[1]`가 없어서 생기는 문제입니다. 커맨드 라인 실행시 입력값을 넣어보세요.
```
$ ./test 17
```
sehongpark님의 답변
## 추가 답변
1. int main(int argc, char* argv[]) 이 부분에 int argc, char* argv[]가 무엇인가요?
=> 커맨드라인 실행시 전달인자의 수가 `argc`에 전달됩니다.
=> 이어서 전달된 값들은 `argv` 변수에 문자열의 배열로 저장됩니다.
```
# 커맨드라인 실행 예
$ ./test 하나 둘 셋
# 전달 값 상황
argc = 4;
argv[0] = "./test";
argv[1] = "하나";
argv[2] = "둘";
argv[3] = "셋";
```
2. int age = atoi(argv[1]); 이 부분에서 argv[1]가 의미하는 것이 무엇인가요?
=> 위 1번을 참조.
3. char role[3][10] = {‘일반’,’청소년’,’어린이’}; 이 부분에서 [10]은 왜 있나요?
=> 3개의 문자열을 저장하는데, 각각 최대길이가 10인 문자의 배열로 갖기 위함입니다.
```
role[0] -> { '일', '반', 0, 0, 0, 0, 0, 0, 0, 0 }
role[1] -> { '청', '소', '년', 0, 0, 0, 0, 0, 0, 0 }
role[2] -> { '어', '린', '이', 0, 0, 0, 0, 0, 0, 0 }
```
4. int prices[] = { 1250, 720, 450 }; 여기서 []는 왜 안에 숫자를 안 넣는 건 가요?
=> 배열을 생성과 동시 초기화 하기 때문에, 자동으로 3이라는 값이 측정됩니다.
## PS.
어제 새벽에 정신없이 답글 달다보니 밑에있던 질문들을 놓쳤네요. ㅠ
시간나서 지금이라도 부랴부랴 추가 답글 달아봅니다.
도움이 된다니 제가 힘이나네요.
더 큰 도움이 될 수 있도록 노력하겠습니다! :D
오늘도 좋은 하루 되세요.