문자열의 숫자을 더하고 출력하기2015. 5. 29. 16:18
숫자 문자열을 진짜 숫자(상수)로 바꿔서 일의자리씩 더하고 출력하여보자
ex) 23sdgds1 을 입력한다면 2 + 3+ 1 = 6 을 출력해야한다.
1. 문자열을 gets 로 입력받는다.
2. 숫자 문자열일 경우 상수로 바꿔서 int형 변수에 저장한다.
3. int형 총합 변수를 출력한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <stdio.h> #include <string.h> #include <ctype.h> void main() { char str[20]; // int result = 0; // printf("문자열 입력 : "); gets(str); for(int i=0; i<strlen(str); i++) { /* isdigit 함수 아래에 설명*/ if(isdigit(str[i]) != 0) result += str[i] - 48; /* -48인 이유 아래에 설명 */ } printf("숫자의 총 합 : %d", result); } | cs |
1. isdigit 함수의 의미
isdigit 함수는 인자로 받은 문자가 '0' ~ '9' 인지 판별하는 함수입니다.
이 함수를 사용하기 위해선 헤더파일 #include <ctype.h>을 추가해야합니다.
반환형은
isdigit(str[i]) = 0 // 거짓으로 판단하여 str[i] 는 숫자 문자가 아님을 의미합니다
isdigit(str[i]) != 0 //참으로 판단하여 str[i] 는 숫자 문자입니다
출처 : http://forum.falinux.com/zbxe/index.php?document_srl=520899&mid=C_LIB
2. result += str[i] - 48 => - 48 의 의미
result 에는 숫자문자를 진짜 숫자로 바꿔서 저장해야합니다.
아스키코드 표를 참조하시면,
문자 숫자는 48~ 57
그래서 '0' 일 경우 숫자는 48
'1'일 경우 숫자는 49 이므로
0을 저장하고 싶으면 48 - 48 = 0
1을 저장하고 싶으면 49 - 48 = 1
이렇게 이해할 수 있습니다.
'Language > C++' 카테고리의 다른 글
[C++] 함수로 주소값 전달하는 방법 (0) | 2015.08.25 |
---|---|
문자열을 입력받고, 문자의 빈도수 계산하여 출력하기 (0) | 2015.05.29 |
단어를 입력받고, 사전 순서대로 출력하기 (0) | 2015.05.29 |
다양한 종류의 포인터 정리 (0) | 2015.05.29 |
2차원 배열 동적할당 & 해제 (0) | 2015.04.24 |