Работа 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
вошло значение вместе с возвратом каретки.
Спасибо огромное комментариям, которые мне на это намекнули.