2012-07-09 90 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);