문제).

명령어(main 함수)의 argument로 두 개의 정수를 입력받아서 두 수를 더하는 프로그램을 작성하시오.

단, atoi( ), atol( )등과 같은 데이터 변환 표준함수는 사용불가

 

실행 예제)

$ sum 100 200
100 + 200 = 300

 

 

답은 아래에... ↓

 

 

 

 

 


 

 

 

 

 

 

스스로 풀어보시고... ↓

 

 

 

 

 

 

 


 

 

 

 

 

아래 답과 비교해보세요. ↓

 

 

 

 

 

 

 


문제 풀이

1. Pointer를 활용한 방법 - sum.c

#include <stdio.h>

int str2int(const char *value)
{
    int ret = 0;
    
    while(*value) {
        if(('0' <= *value) && (*value <= '9')) {
            ret = ret * 10 + *value - '0';
        } else {
            return ret;
        }
        value++;
    }
    
    return ret;
}


int main(int argc, char **argv)
{
    int idx;
    
    if(argc != 3) {
        printf("usage: %s 숫자1 숫자2\n", argv[0]);
        return 1;
    }
    
    printf("%s + %s = %d\n", argv[1], argv[2], str2int(argv[1]) + str2int(argv[2]));
    return 0;
}

 


 

2. 배열을 활용한 방법 - sum.c

#include <stdio.h>

int str2int(const char *value)
{
    int ret = 0;
    int idx;
    
    for(idx = 0; value[idx]; idx++) {
        if(('0' <= value[idx]) && (value[idx] <= '9')) {
            ret = ret * 10 + value[idx] - '0';
        } else {
            return ret;
        }
    }
    
    return ret;
}


int main(int argc, char **argv)
{
    int idx;
    
    if(argc != 3) {
        printf("usage: %s 숫자1 숫자2\n", argv[0]);
        return 1;
    }
    
    printf("%s + %s = %d\n", argv[1], argv[2], str2int(argv[1]) + str2int(argv[2]));
    return 0;
}
블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요