2019-04-18 13:18:20

sscanf 함수 사용 예제1

I am 6 years old.

I am 12 years old.

I am 32 years old.

I am 75 years old.

 

위와 같은 문자열들이 있다. 여기서 나이에 해당하는 숫자들만 쏙쏙 뽑아내고 싶다면 어떻게 해야할까? 바로 sscanf 함수를 사용하면 된다. sscanf 함수는 문자열에서 필요한 데이터만 추출할 때 사용할 수 있는 함수다. sscanf에서 맨 앞의 s는 string의 약자로 보이고, 맨 뒤의 f는 format의 약자로 보인다. 함수의 이름을 통해 이 함수가 어떤 작업을 하는지 알 수 있다.

 

"문자열(string)에서 형식(format)이 지정된 데이터를 읽어(scan)줘."

 

그럼 이제 위 문자열들에서 나이에 해당하는 숫자들만 추출해보자. 4개의 문자열에서 공통적으로 존재하는 내용이 I am + 나이 + years old. 이므로 다음과 같이 코딩을 하면 된다. 

 

 

위 코드를 실행하면 다음과 같이 6, 12, 32, 75만 추출해서 age란 이름의 배열에 잘 담긴 것을 확인할 수 있다. 

 

 

무식해보이는 예제를 만들었지만, 가끔 이것과 유사한 작업을 해야할 때가 있다. 

 

sscanf 함수 사용 예제2

이번에는 어떤 폴더 내에 있는 이미지의 이름 중에서 숫자 부분만 추출해보자. C:\Users\Sim\Desktop\photos 폴더 내에 있는 IMG8771.jpg 에서 8771만 추출할 것이다. 아래와 같이 코드를 짜보았다. 

 

여기서 집고 넘어가야 할 것은 \ 자리들에 \\를 썼다는 것이다. \를 하나만 쓰면 다른 명령으로 받아들이기 때문이다. \을 나타내기 위해서는 두 개를 써야 한다. 구현 결과 8771이 제대로 추출되었다.