반응형
문제).
명령어(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;
}
반응형
'C언어 문제 > 문법 이해' 카테고리의 다른 글
[bit연산] 비트 연산 전후 데이터를 2진수로 출력하기 (0) | 2019.11.06 |
---|---|
[bit연산] 10진수를 2진수, 8진수, 16진수로 변환하기 (0) | 2019.11.06 |
[반복문] 입력문자 횟수만큼 출력 (for문 예제) (0) | 2019.11.04 |
[반복문] 전체 구구단을 1단씩 출력하는 프로그램 (0) | 2019.11.03 |
[함수] 함수로 분리 하기 문제 (0) | 2019.10.25 |