извлечь номер из http запроса - PullRequest
0 голосов
/ 03 октября 2018

Я хочу извлечь некоторое число из запросов HTTP Get в C. Например, если мой HTTP-запрос имеет вид:

GET /getUIKVal?mdn=9860436150 HTTP/1.1
Host: api.end.point

Я хочу, чтобы число 9860436150 было напечатано в качестве вывода.Я уже пробовал с sscanf () и atoi ()

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Вы можете использовать strstr для идентификации маркера mdn=, а затем отсканировать число или строку.Обратите внимание, что для сканирования номера вам не нужно копировать соответствующее содержимое;Приведенный ниже код показывает, как:

const char* content = "GET /getUIKVal?mdn=9860436150 HTTP/1.1";
const char* startOfNumber = strstr(content,"mdn=");
if (startOfNumber) {
   startOfNumber += strlen("mdn=");
   long number;
   if (scanf("%ld",&number)==1) {
      printf("the number is... %ld", number);
   } else {
      printf("no valid number after 'mdn='");      
   }
} else {
      printf("marker 'mdn=' not found.");      
}

Я на самом деле предпочитаю решение strstr, а не решение, где scanf идентифицирует и маркер, и число, потому что тогда сложно рассуждать о синтаксических ошибках.

0 голосов
/ 03 октября 2018

Вы можете просто использовать sscanf, как показано ниже.

char* line = "GET /getUIKVal?mdn=9860436150 HTTP/1.1";
long long val ;

int ret = sscanf(line, "%*[^=]=%lld",&val);
printf("%lld\n", val) ;

Где %*[^=]= будет считывать и отбрасывать строку, пока не достигнет =, а %ld будет считывать фактическое число в val.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...