2014-02-07 3 views
4

내가 문자열 (숯불 *)를 분석하고있어의 수를 반환하지 않습니다 사용하고 난 복식로 문자열에서 숫자를 구문 분석과 같이 할 sscanf를 사용하고있는 동안 :형식 지정자 % N sscanf를 문자

while(*s){ 
    if(sscanf(s, " %1[MmLl] %f %f %n ", command, &x, &y, &n) == 3){ 
     //Do some processing 
     s += n; 
    } 
} 

이 경우는 거의 예외가 아닌 대부분의 입력에 적용됩니다. 문제는 count 변수 n에 있습니다. 일부 입력의 경우, 변수 n은 절대로 업데이트되지 않고 이전 반복 횟수를 계속 보유합니다. 결과적으로 잘못된 오프셋이 발생하고 구문 분석이 엉망이됩니다. 입력에 이상한 것을 보지 못했습니다.

참고 :이 문제는 동일한 코드가 Linux에서 올바른 출력을 생성하므로 Windows에서만 발생합니다.

비슷한 문제가있는 사람이 있습니까?

+2

'% n'앞뒤의 공백을 제거하십시오. – ooga

+0

감사합니다. % n 이전 및 이후 공백 제거. – Mugunth

+1

이것이 문제를 해결하는 이유에 대한 설명? 그것은 나에게 즉시 명백하지 않다. –

답변

2

%n 앞뒤의 공백을 제거하십시오.