는 모든 숫자sscanf를 사용하여 와일드 카드를 일치시킬 수 있습니까? 예를 들어
..."12334", "21335", "24335"...
, C 문자열의 배열을 고려하고 나는이 와일드 카드
**33* (where * = any digit 0-9)
나는 이러한 목표를 달성하기 위해 sscanf(str, mask, ...)
을 사용할 수 마스크 일치 얼마나 많은 이들 문자열 알고 싶어? "%1d%1d%[3]%[3]%1d"
형식은 내가 원하는 것 이상 (33이 없을 때)과 일치하는 것으로 보이며 "%1d%1d33%1d"
은 일부 일치하는 항목과 일치하는 항목과 일치하는 것 같이 이상하게 작동하는 것처럼 보입니다. 내 코드에서
컨텍스트 :
if (sscanf(array[i], mask, &a1, &a2, &a3) == 3)
(3)는 와일드 카드 자리의 수는 일치된다.
반환 값 확인을 포함하여 전체 코드를 표시 할 수 있습니까? sscanf()에 대한 첫 번째 인수로'argv [1]'을 사용하는'int main()'을 가진 프로그램은 완벽 할 것입니다. –
@ 존 Zwinck 나는 확인하는 데 사용되는 라인을 추가했습니다. 'mask '는 내가 설명한 형식이며,'a1, a2, a3'는 32 비트 int입니다. 'sscanf '가 내가 설명한 것을 할 수 있고 어떤 포맷이되어야 하는지를 묻는 것입니다. –
@jefferson 몇 가지 옵션이 있습니다. 1) strchr을 사용하여 문자열의 첫 번째와 두 번째 항목이 원하는 위치에 있는지 확인하십시오. 2) 모든 가능한 조합을 일치시킬 수 있도록 정수를 작성하십시오. – Chirality