Выводит непонятные символы в 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;

Я правильно понял, что вы возвращаете указатель на буфер, который локальный и по завершению функции вроде как должен сдохнуть?

→ Ссылка