if ((start_pointer = strstr(request, "Cookie:") != NULL)){
должно быть
if (((start_pointer = strstr(request, "Cookie:")) != NULL){
Обратите внимание на изменение местоположения скобки.
Оператор присвоения =
имеет более низкий приоритет, чем оператор !=
.То, что у вас есть, эквивалентно:
if ((start_pointer = (strstr(request, "Cookie:") != NULL)){
, который в основном присваивает результат сравнения start_pointer
.
Однако вам не нужно сравнивать с NULL вообще(потому что любое ненулевое значение «истина» в C).Вы могли бы просто написать:
if ((start_pointer = strstr(request, "Cookie:"))){
...
}
или
char * start_pointer = strstr(request, "Cookie:");
if (start_pointer) {
...
}
Таким образом, это намного легче читать и помогает избежать таких ошибок.