Я пытаюсь разобрать строку типа HTTP POST /abc/def/ghi/klm/mno
, где я хочу разделить различные компоненты, а именно протокол, HTTP-глагол и путь.
Я использую функцию strtok
, а затем копирование строки с использованием функции strlen
. Но когда я пытаюсь напечатать строку, она дает несколько случайных байтов, как показано ниже.
Я не могу понять причину этого. Вот что я делаю.
struct my_con {
char protocol[100];
char method[100];
char uri[100];
};
char* header = "HTTP POST /abc/def/ghi/klm/mno";
void my_func(my_con **mc) {
char* p = strtok(header," ");
int c = 0;
while(p != NULL) {
if(count == 0) strncpy((**mc).protocol, p, strlen(p));
elseif(count == 1) strncpy((**mc).method, p, strlen(p));
elseif(count == 2) strncpy((**mc).uri, p, strlen(p));
count++;
p = strtok(NULL, " ");
}
}