2014-12-12 2 views
1

sscanf를 사용하여 텍스트 문자열을 스캔하고 값을 배열에 저장하려고합니다. 마지막 문자열을 저장할 때 공백에 관해서는 스캔을 멈 춥니 다. 예를 들어 아래 문자열에서 "STRING"이라는 단어 만 저장합니다. 나는 % [^ \ t \ n]과 다른 다양한 지정자를 사용하여 시도했지만 무언가가 누락 된 것 같습니다.sscanf를 사용하여 C에서 공백이있는 문자열 읽기.

나는 단지 공백을 포함하는 기능을 얻지 못한다.

string test = "9999:STRING OF TEXT"; 

scan = sscanf(test, "%d:%s", rec[i].ref, rec[i].string); 

답변

1

그럼 작동하지 않습니까?

sscanf(test, "%d:%[^\t\n]", rec[i].ref, rec[i].string); 

체크 아웃이 답변 :

reading a string with spaces with sscanf는 기본적으로이 뜻이 수를 일치 아무것도 다음에 괄호 (탭, 줄 바꿈)에없는의^기호를 확인합니다.

+0

덕분에, 나는 그것을 읽어야 인상이었다 "% d 개를 % s와 [^ \ t \ 없음이]"내 말에 바보 같은 것 알고 있었다! – newprogrammer

2

최소한의 작업 코드를 게시해야합니다.

그러나 % f 및 % d와 같은 숫자 형식처럼 % s에서 공백을 건너 뛰지는 않을 가능성이 큽니다. : 이후의 내용을 캡처하려면 sscanf(test, "%d:%[^\n]", rec[i].ref, rec[i].string);과 같은 것을 사용하십시오. 자세한 내용은 여기

봐 : [http://www.cplusplus.com/reference/cstdio/sscanf/][1]

+0

'% s'은 초기 공백을 건너 뜁니다. – mafso