sscanf写入字符数组

时间:2012-07-09 08:57:49

标签: c scanf

#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后被终止。我可以用一种方法将整个部分复制到单个字符串buf中。 感谢您提前提供任何帮助。

2 个答案:

答案 0 :(得分:2)

尝试使用格式说明符%[^\n]代替%s

这将告诉sscanf读取并存储任何字符,直到换行符(\n)为buff:

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

对于其他应用,您可以添加到[]内的字符,例如,如果您想在到达换行符标签后停止阅读:[^\n\t]

答案 1 :(得分:0)

这是一个替代sscanf系列,可以解决您的问题。

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