2012-07-09 2 views
0
#include <stdio.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <stdlib.h> 
#include <string.h> 

int main() 
{ 
char buffer[40000]= "3 Hello World"; 
int idvalue; 
char buf[4000]; 
sscanf(buffer,"%d %s%s",&idvalue,buf); 
printf("%d->%s\n",idvalue,buf); 
return 0; 
} 

이 코드에는 항상 "정수 나머지 부분"유형의 변수 버퍼가 있습니다. 해당 변수의 내용을 두 개의 새로운 변수 idVue 및 buf.idvalue에 복사하려면 해당 정수를 포함하고 buf에는 공백을 포함 할 수있는 나머지 부분이 포함됩니다. idvalue는 올바르게 복사되지만 buf의 경우 값은 공백 문자 다음에 끝납니다. 전체 문자열을 하나의 문자열 buf에 복사하는 방법을 알려주십시오. 사전에 도움을 주셔서 감사합니다. sscanf 문자 배열에 쓰기

+0

'sscanf'형식 문자열에는 세 가지 형식 지정자가 있지만 두 개의 포인터 만 있습니다. –

답변

2

%s 대신 형식 지정자 %[^\n]을 사용해보세요. 당신이 원하는 경우 예를 들어, 당신은 [] 내부의 문자에 추가 할 수있는 다른 응용 프로그램의

sscanf(buffer, "%d%[^\n]", &idvalue, buf); 

:이 읽고 버프로 줄 바꿈 (\n)까지 모든 문자를 저장하는 sscanf을 말할 것이다

새 행 또는 탭에 도달하면 읽기를 중지하려면 [^\n\t].

+0

thanks.it worked – Mcolorz

0

다음은 문제를 해결하는 대체 sscanf 행입니다.

sscanf(buffer,"%d %[^\n]",&idvalue,buf);