我在python中编写了一个服务器,在C中编写了客户端。
python服务器向C客户端发送“1 1000 \ n”。
收到此字符串的C函数应将其解析为两个long int。
void receive_job() {
char tmp_buffer[256];
long start, stop;
recv(sock, tmp_buffer, 255, 0);
/*
here I wonder how I can parse tmp_buffer to set start and stop values.
*/
}
我对C不是很精通,所以我很感激对此发表评论。
答案 0 :(得分:5)
根据您的具体数据类型,查看strtol()或strtoul():
char end;
long x = strtol(tmp_buffer,&end,10);
long y = strtol(end+1,NULL,10);
答案 1 :(得分:4)
使用strtol
。
char data[] = "1 1000\n";
char *next, *err;
long a = strtol(data, &next, 10);
long b = strtol(next, &err, 10);
答案 2 :(得分:2)
查找sscanf
手册页 - 但请检查返回值!
答案 3 :(得分:1)
最好在调用tmp_buffer
之前使用memset
清除recv
,或者至少在其中添加空字节。否则它会包含垃圾,如果传输错误,你可能会解析垃圾。