C,C++/개념 실습 프로그래밍
문자열에 포함된 숫자를 문자로 변경하기
luckybee
2022. 9. 21. 21:06
728x90
반응형
"12@3s4#5$6%7^8p9"
위와 같이 숫자와 문자가 같이 섞여있는 문자열이 있다. 이 문자열에서 숫자를 제외한 다른 문자를 제외하고 123456789라는 숫자를 출력하고 싶으면 어떻게 해야 할까?
이 경우에는 atoi함수도 사용할 수 없다. 왜냐하면 atoi함수는 문자로 된 숫자를 int 형식으로 바꿔주는 함수이지만 이렇게 숫자 중간에 다른 문자가 껴있으면 숫자로 표시된 12만 정수로 바뀌고 그 뒤에 나온 @문자를 만나는 순간 변환을 중단하고 함수를 빠져나오도록 설계되어있기 때문이다.
그럼 atoi를 사용하지 않고 숫자와 문자가 섞여있는 문자열을 정수 형태로 분리해서 값을 대입하는 코드를 구현하면 아래와 같다.
#include<stdio.h>
int main()
{
char *p_arr="12@3s4#5$6%7^8p9"; // 문자열 시작 주소 대입
int result=0; // 정수의 결과를 대입할 변수
while(*p_arr) //*p_arr에 NULL문자를 만날때까지 반복문 실행
{
if(*p_arr>='0'&&*p_arr<='9') //문자열 '1'~'9'까지 범위를 설정한다.
{
result= (result*10)+ *p_arr-'0'; //문자열 '1'~'9에 -'0'을 빼면 각 정수가 된다.
}
p_arr++;
}
printf("result: %d",result); //결과값 출력
return 0;
}
728x90
반응형