2012-07-09 69 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; 
} 

在這段代碼中,我有一個變量緩衝區,它總是一個類型爲「整數部分餘數」的類型。我想將該變量的內容複製到兩個新變量idvalue和buf.idvalue將包含該整數,buf將包含可以有空格整數字符串等部分的其餘部分 立即寫入idvalue被正確複製,但在buf該值在whitespace.tell之後終止,將整個剩餘部分複製到單個字符串buf中。 感謝您提前提供任何幫助。sscanf寫入字符數組

+0

在'sscanf'格式字符串中有三個格式說明符,但只有兩個指針。 – 2012-07-09 09:06:20

回答

2

嘗試使用格式說明符%[^\n]而不是%s

這將告訴sscanf讀取並存儲任何字符,直到一個換行符(\n)到BUFF:,

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

對於您可以添加到字符[]內的其他應用,例如,如果你想停止閱讀一旦你到達換行一個標籤:[^\n\t]

+0

thanks.it工作 – Mcolorz 2012-07-09 09:14:27

0

這是更換sscanf行,應該解決您的問題。

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