관리 메뉴

History

문자열에 포함된 숫자를 문자로 변경하기 본문

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
반응형
Comments