Функция для считывания строки, почему выходит за рамки массива и выводит мусор в конце? Помогите плиз!

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

char* ReadString()
{
    char Simvol;
    char* Local_Name = (char*)malloc(sizeof(char));
    int len = 0;
    printf("Enter Surname(Key): ");
    do{

        scanf_s("%c", &Simvol);
        if (len == 30 || Simvol == '\0' || Simvol == '\n')
        {
            break;
        }
        if (Simvol != '\n' && Simvol != '\0')
        {
            Local_Name[len] = Simvol;
            len++;
            Local_Name = (char*)realloc(Local_Name, (1 + len) * sizeof(char));
        }
    } while (Simvol != '\n' || len < 1);
    Local_Name[len] = '\0';
    return Local_Name;
}
int main()
{
    char *key = ReadString();
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    printf("%s", key);
    return 0;
}

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