Выводит непонятные символы в printf
Требовалось реализовать парсинг строки, крутил так и эдак, всё время в консоль вместо нужных строк выводятся непонятные символы, при том что в дебаге всё отлично. В данном случае функция ищет подстроку, окружённую двойными кавычками, и возвращает ее без кавычек. Говнокод в функции потому, что отчаялся и ищу малейшую возможность реализации.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef char* string;
string get_request(string next_line)
{
char buffer[256];
sprintf(buffer, "%s", next_line);
size_t ptr_first_quotation = strcspn(buffer, "\"");
if (ptr_first_quotation == strlen(buffer))
{
return NULL;
}
sprintf(buffer, "%s", buffer + ptr_first_quotation + 1);
size_t ptr_second_quotation = strcspn(buffer, "\"");
if (ptr_second_quotation == strlen(buffer))
{
return NULL;
}
char result[30];
snprintf(result, 30, "%s", buffer);
return result;
}
Пример вывода в консоль при входной строке
199.72.81.55 - - [01/Jul/1995:00:00:01 -0400] "GET /history/apollo/ HTTP/1.0" 200 6245 
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
char result[30];
snprintf(result, 30, "%s", buffer);
return result;
Я правильно понял, что вы возвращаете указатель на буфер, который локальный и по завершению функции вроде как должен сдохнуть?
