Работа strcmp. Она будто меняет значение

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <unistd.h>
#include <locale.h>
#include <math.h>
//#include <netinet/in.h>
//#include <arpa/inet.h>

#define PORT 8000
#define MAX_REQUEST 8
#define MAX_USERS 100
#define MAX_HTML_COUNTER 10
#define MAX_LENGTH 50
#define MAX_ROOMS 8
#define MAX_USERS_IN_ROOM 8

typedef struct{
    //Start string
    char Method[20];
    char URL[MAX_LENGTH];
    char Protocol[10];
    //Heading
    char Host[MAX_LENGTH];
    char Date [MAX_LENGTH];
    char Last_Modified[MAX_LENGTH];
    char Content_Type[MAX_LENGTH];
    char Content_Language [MAX_LENGTH];
    char Content_Length [MAX_LENGTH];
    char Connection[MAX_LENGTH];
    char Cach_Control[MAX_LENGTH];
    char Upgrade_Insecure_Requests[MAX_LENGTH];
    char Origin[MAX_LENGTH];
    char User_Agent[200];
    char Accept[200];
    char Referer[MAX_LENGTH];
    char Accept_Encoding[MAX_LENGTH];
    char Accept_Language[MAX_LENGTH];
}HTTP_Context;

int main(){
    setlocale(LC_ALL, "");
    char s[correct_size("D:\\p\\a\\buffer.txt")];//возвращает требуемый объем для файла
    send_html("D:\\p\\a\\buffer.txt", s);//вставляет в "с" содержимое файла
    HTTP_Context HTTP_ex;
    create_http_struct(s, &HTTP_ex);// Подставляет соответствующие HTTP значения 
    printf("Method=%s\nURL=%s\nProtocol=%s\n", HTTP_ex.Method, HTTP_ex. URL, 
    HTTP_ex.Protocol);
    if(strcmp(HTTP_ex.Protocol, "HTTP/1.1\0")!=0){
        printf("%s != %s\n", HTTP_ex.Protocol, "HTTP/1.1\0");
    }
    return 0;
}

После работы функции strcmp значение HTTP_ex.Protocol меняется и оно ничего не выводит.

Моя функция (create_http_struct) вставляет символ конца строки в конце каждого аргумента

Вывод программы:

Method=GET
URL=/
Protocol=HTTP/1.1
!=HTTP/1.1\0

Подскажите, пожалуйста, как исправить. 10 раз себе голову сломал, пока думал в каком месте сглупил.


Ответы (1 шт):

Автор решения: Дмитрий

Первая строка HTTP-заголовка такова:

GET /index.html HTTP/1.1\r\n

Я не учел того, что в конце стоит возврат каретки. И в HTTP_ex.Protocol вошло значение вместе с возвратом каретки. Спасибо огромное комментариям, которые мне на это намекнули.

→ Ссылка