Разбор строки в long в C - PullRequest
0 голосов
/ 28 октября 2011

Я написал сервер на python и клиент на C.

Сервер python отправляет то есть "1 1000 \ n" клиенту C.

Функция C, которая получаетэта строка должна разобрать ее на два длинных целых.

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 ]

5 голосов
/ 28 октября 2011

Посмотрите на strtol () или strtoul (), в зависимости от вашего конкретного типа данных:

char end;
long x = strtol(tmp_buffer,&end,10);
long y = strtol(end+1,NULL,10);
4 голосов
/ 28 октября 2011

Использование strtol.

char data[] = "1 1000\n";
char *next, *err;
long a = strtol(data, &next, 10);
long b = strtol(next, &err, 10);
2 голосов
/ 28 октября 2011

Посмотрите sscanf справочную страницу - но проверьте возвращаемое значение!

1 голос
/ 28 октября 2011

Лучше очистить tmp_buffer с помощью memset перед вызовом recv или хотя бы добавить в него нулевой байт. В противном случае он будет содержать мусор, который вы можете проанализировать, если что-то будет передано неправильно.

...