리소스를 자유롭게 사용할 수 있도록 공유하는 곳
선언문은
bool strtakenumber(char * buffer, int size);
bool strtakenumber(char * buffer);
이고
정의문은
bool strtakenumber(char * buffer, int size)
{
// 숫자 이외의 부분 골라서 지우는 알고리즘
// 만든 이 : A.미스릴
// http://hondoom.com/
// http://blog.naver.com/hanpcship/
int i, j;
size += 1; // 기본적으로 널 문자는 무시되기 때문에 실제로 1 더 더해준다
// 일단 안바뀐 상태
bool bool_changed = false;
for ( i=0; (i<size && buffer[i] != '\0') ; i+=1 )
{
if ( buffer[i] < '0' || buffer[i] > '9' )
{
// 숫자가 아닌 코드 발견(48~57은 각각 숫자 0~9를 의미함)
// 어머 지워야겠네?
// 루프 조건은 일정한 사이즈를 넘기지않고 \0(널문자)이 발견안되면
for ( j=i+1; (j<size && buffer[j] != NULL) ; j+=1 )
{
// 앞쪽으로 1칸씩 수들을 모조리 끌어당김
buffer[j-1] = buffer[j];
}
buffer[j-1] = '\0';
bool_changed = true;
i -= 1;
}
}
return bool_changed;
}
bool strtakenumber(char * buffer)
{
return strtakenumber( buffer, strlen(buffer) );
}
입니다.
잘쓰세요.
예시1 ) "345abc" => "345"
예시2 ) "1a2s3df4" => "1234"
예시3 ) "씨8아!" => "8"
if ( buffer[i] < '0' || buffer[i] > '9' ) 식으로 적으면 훨씬 가독성이 높아질거라 봅니다.
널도 \0보다는 NULL이라고 적는 편이 좋다고 생각합니다.