2014-01-07 1 views
1

빠른 질문 : .conf 파일의 데이터를 사용하여 Gameserver에 연결합니다. 나는 sscanf를 사용하여 파일을 분석하고, 공백은 무시되지만, 프로그램 효율을 테스트해야한다. 포트 번호 라인의 모든 공백을 제거하고, 더 이상 작동하지 않는다. .conf 파일의 원래 형식은 보통입니다. Portnumber = XXXX; sscanf()가 등호를 제외하도록하려면 어떻게해야합니까?C에서 '='을 제외 할 형식 지정자

sscanf(line, "%s = %s", parameter_name, parameter_value); 
    debug(parameter_name); 
    debug(parameter_value); 

및 PARAMETER_NAME은 그냥 옆으로 다른 모든를 사용하는 동안 그 두 번째 매개 변수를 저장하기 위해

sscanf(line, "%s %[^=]s", parameter_name, parameter_value); 

를 사용하여 시도 ... 한 번에 전체 라인을 저장 다음과 같이 나는 그것을 사용하고 있습니다 '=',하지만 작동하지 않습니다 ... 아무도 아이디어가 있습니까? 나는 ... 그물에 형식 지정자 태그의 실제 전체 목록을 찾을 수

환호

답변

0

man scanf 당신에게 식별자와 그 설명의 전체 목록을 제공해야합니다 수없는 것.

어쨌든 첫 번째 %s은 공백을 찾을 때까지 모든 것을 먹을 것이기 때문에 어떤 시도도 시도하지 않습니다. 이는 기본 동작입니다. 첫 번째 형식 지정자에 %[^=]을 사용해야합니다.

sscanf(line, "%[^= ] = %s", parameter_name, parameter_value); 
+0

감사합니다. 그러나 이제 두 번째 char 배열이 parameter_value 변수에 저장되지 않습니다 .... –

+0

@SpadeJohnsson = 사이에 공백이 있습니까? –

+2

그것은'sscanf (줄, "% [^ =] = % s", ...)'가 아니어야합니까? –