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;
}

在这段代码中,我有一个变量缓冲区,它始终是“整数其余部分”类型。我想将该变量的内容复制到两个新变量idvaluebuf. idvalue将包含该整数,buf并将包含可以包含空格、整数、字符串等的其余部分。现在写入idvalue被正确复制,但如果buf值在空格后终止。告诉我一种将其余部分复制到单个字符串中的方法buf

4

2 回答 2

3

尝试使用格式说明符%[^\n]而不是%s.

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

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

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

于 2012-07-09T09:07:13.463 回答
0

这是一个替换 sscanf 行,应该可以解决您的问题。

 sscanf(buffer,"%d %[^\n]",&idvalue,buf);
于 2012-07-09T09:07:17.027 回答