2012-04-10 4 views
1

"asdf + lghd + ewre + fdsf + ..."와 같이 길이가 다양한 문자열이 있습니다. 이것으로부터 "% s + % s + % s + ..."와 유사한 sscanf 함수와 함께 사용할 템플릿도 있습니다. 이들 둘 다 가변 길이이기 때문에 sscanf에서 문자열의 동적 배열에 값을 저장하는 추가 인수를 바꿀 수 있습니까? 예를 들면 다음과 같습니다.sscanf 인수를 배열로 대체 할 수 있습니다.

char *test = "adfe + asdf + fghe + jklo"; 
char *template = "%s + %s + %s + %s"; 
char destination[4][4]; 
sscanf(test, template, destination); 

즉각적인 시각으로 볼 때 이것이 작동하지 않는 것처럼 보입니다. 이렇게하려면 대체 방법이 있습니까?

답변

0

sscanf()은 지원하지 않지만 사용자 자신의 scanf 버전을 작성할 수 있습니다.

나는 이것을 C#에서 이미했고 코드 here을 게시했다. 아마도 내 코드는 C에서 사용자 지정 버전을 작성하기위한 몇 가지 아이디어를 제공 할 것입니다.

0

sscanf으로는 수행 할 수 없습니다. 루프를 반복해야합니다.

0

아니요 sscanf는 'C'의 모든 xxxxxf 함수와 마찬가지로 인수 목록에 다양한 수의 인수를 사용합니다. 4 개의 문자열 (4 % s)을 찾고 있다면이 함수는 문자 배열 인 4 개의 인수를 기대합니다. 귀하의 예제에서, 당신은 4 개의 문자 배열의 배열 인 단일 인수를 제공하고 있습니다.

사용할 수있는 구분 기호를 사용하여 입력을 구문 분석 할 수있는 한 가지 방법이 있습니다. 이것을 수행하는 방법에 대한 힌트를 얻기 위해 substr과 pos 함수를 보라.

관련 문제