#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中。 感谢您提前提供任何帮助。
答案 0 :(得分:2)
尝试使用格式说明符%[^\n]
代替%s
。
这将告诉sscanf
读取并存储任何字符,直到换行符(\n
)为buff:
sscanf(buffer, "%d%[^\n]", &idvalue, buf);
对于其他应用,您可以添加到[]
内的字符,例如,如果您想在到达换行符或标签后停止阅读:[^\n\t]
答案 1 :(得分:0)
这是一个替代sscanf系列,可以解决您的问题。
sscanf(buffer,"%d %[^\n]",&idvalue,buf);