在C中将字符串解析为long

时间:2011-10-28 13:53:16

标签: c string parsing int

我在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不是很精通,所以我很感激对此发表评论。

4 个答案:

答案 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,或者至少在其中添加空字节。否则它会包含垃圾,如果传输错误,你可能会解析垃圾。