예를 들어서
을 치면 15 가 나오게 하면 되지요.
이 때, 5, +, 10 은 모두 다른 인자로 봐야하겠죠. 기초적인 단계 이므로 연산자는 하나만 써도 된다고 합시다.참고로 인자는 모두 문자열 형태로 오기 때문에 문자열로 된 수를 int 형으로 바꾸는 작업이 필요할 것입니다.
#include <stdio.h>
int charToInt(char* number);
int main(int argc, char** argv) {
int num1, num2;
if (argc != 4) {
printf("받은 인자의 갯수 : %d \n", argc);
return 0;
}
num1 = charToInt(argv[1]);
num2 = charToInt(argv[3]);
if (*argv[2] == '+') {
printf("%d + %d = %d \n", num1, num2, num1 + num2);
}
return 0;
}
int charToInt(char* number) {
int i = 0;
int result = 0;
int number_place = 1;
while (number[i]) i++;
while (i) {
i--;
result += (number[i] - 48) * number_place;
number_place *= 10;
}
return result;
}
char** argv 의 뜻은 (char*) 형을 가리키는 포인터이다.
즉 포인터의 배열 이다.
argv 는 포인터들의 배열을 가리키고 있고, 그 포인터 배열에서의 각각의 원소, 즉 포인터들은 인자로 전달된 문자열들을 가리키고 있습니다.
이 때, 이 문자열들은 메모리의 다른 공간에 보관되어 있겠죠.
따라서 우리는 argv[i] 를 통해 특정한 인자의 문자열에 저장된 주소값을 나타낼 수 있게 됩니다.