The `strtok()` call here: char* absolute_path = strtok(req_tar, "?"); will crop `req_tar` at the `?` and make it always be equal to `abs_path`. Because of this, the following condition will never be true and you'll never extract `query`: if(strcmp(req_tar, abs_path) != 0) query = strstr(req_tar, abs_path); But even if that condition triggered, I don't think you understand what `query` should be. Given a line `"GET /hello.php?name=Alice HTTP/1.1\r\n"`, this is what you should extract: - `abs_path` should be `/hello.php` - `query` should be `name=Alice` And this `query = strstr(req_tar, abs_path);` wouldn't make `query` become this `name=Alice`. Here you can see the first part of your approach in action and what it does to `req_tar`: https://goo.gl/OzkIXX (wait some seconds for the code to load and then use the forward button to step through your code)