1

由于recvfrom(),我收到了一个缓冲区。可以说,

字符缓冲区[12] = "你好 1";

我想将 Hello 和 1 分开并将它们存储在不同的缓冲区中,以便一个缓冲区中有“Hello”,而另一个缓冲区或 int 变量中存储有“1”。

换句话说,我想根据空格分隔缓冲区的内容。如何才能做到这一点?

我试过了:

int number;
char buff[7];
sscanf (buffer,"%s %d",buff,number);

这种方法会奏效吗?

4

3 回答 3

3

如果只有两个词,你的想法就会奏效。但是您的代码中有一个小错误。以这种方式更改 sscanf

sscanf (buffer,"%s %d",buff,&number);
于 2013-06-06T10:11:57.190 回答
2

这种方法有效,但您需要更改以更改sscanf为:

sscanf (buffer,"%s %d",buff,&number);

%d 需要一个int*,而您正在发送一个int.

于 2013-06-06T10:12:07.487 回答
1

看起来你想要strtok,它可以做到这一点。但是请确保您的字符串是 NULL 终止的,recv并且其他套接字函数不会为您执行此操作,并且标准 C 字符串函数确实需要 NULL 终止。

于 2013-06-06T10:11:37.750 回答