[C언어] sscanf 질문입니다.
글쓴이: rpit1412 / 작성시간: 수, 2017/04/12 - 4:47오후
안녕하세요,
sscanf를 이용하여 문자열을 입력 받으려고 합니다.
case 1 : "#NUMBER:STRING1=STRING2"
case 2 : "#NUMBER:=STRING2"
위의 두 케이스로 NUMBER와 STRING2 문자열을 입력받으려고 하는데요..(STRING1은 입력여부와 관계없이 생략)
strtok을 사용할수도 있겠지만 sscanf를 사용하면 좀더 간편할 것 같아서 시도해보고 있습니다.
sscanf( input_string, "#%u:%*[^'=']=%[^\n]", &number, string2 );
위와 같이 코딩했더니 case 1에 대한 문자열은 파싱이 제대로 되는데,
case 2에 대한 문자열은 파싱이 제대로 되지 않습니다.
아무래도 ":"와 "=" 사이가 아무것도 없어서 안되는거 같아요
표현식을 어떻게 바꿔야할지 조언 부탁드립니다.
Forums:
"0 or more" 매치를 시켜야 되는데
"0 or more" 매치를 시켜야 되는데 scanf에서 그게 가능한지는 저도 모르겠고요(잠깐 검색한 걸로는 정규식 쓰라는 얘기나 보이고...)
1안 - 포맷문자열을 두 가지 준비한 다음 sscanf 의 리턴값을 검사해서, 첫번째 시도가 실패하면 두번째 것을 사용
2안 - NUMBER 바로 뒤에 있는 ':' 를 %*[^=]로 읽는 대상에 포함시키면 ":" 또는 ":STRING1" 이니까 반드시 한 글자 이상이 되겠네요.
좋은 하루 되세요!
댓글 달기