我有一个因recvfrom()而收到的Buffer。让我们说,
char buffer [12] =“Hello 1”;
我想将Hello和1分开并将它们存储在不同的缓冲区中,以便一个缓冲区中包含“Hello”,其他缓冲区或int变量中存储“1”。
换句话说,我想基于空格分隔缓冲区的内容。怎么办呢?
我试过了:
int number;
char buff[7];
sscanf (buffer,"%s %d",buff,number);
这种方法有用吗?
答案 0 :(得分:3)
如果只有2个单词,您的想法将起作用。但是代码中存在一个小错误。 以这种方式改变sscanf
sscanf (buffer,"%s %d",buff,&number);
答案 1 :(得分:2)
此方法有效,但您需要更改以将sscanf
更改为:
sscanf (buffer,"%s %d",buff,&number);
%d需要int*
,而您发送的是int
。
答案 2 :(得分:0)
看起来你想要strtok,它可以做到这一点。但请确保您的字符串以NULL结尾,recv
并且其他套接字函数不会为您执行此操作,并且标准C字符串函数确实需要NULL终止。