Вместе с текстом выводится мусор - C (СИ)

Формулировка задачи:

Здравствуйте дорогие товарищи. Я изучал С# и решил перейти на Си. Взял простенькую задачу из студенческого задачника. Суть задачи - обработка строки в реальном времени(дать возможность копипастить заданный интервал) Поскольку в Си нет такого типа переменной как string пришлось выкручиваться. И тут я столкнулся с проблемой, что не могу даже правильно вывести строку. Вот код моей программы(самая основа)
#include "stdafx.h"
#include <stdlib.h>
 
char* str = (char*)malloc(sizeof(char));
int size = 1;
int used = 0;
 
void read()//чтение строки с клавиатуры
{
    for (int i = getchar(); i != 10; i = getchar())
    {
        if (used == size)
        {
            size++;
            str = (char*)realloc(str, sizeof(char) * size);
        }
        str[used++] = i;
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{ 
    printf("Enter the string\n");
    read();
    printf(str);
    printf("\n");
    getchar();
    return 0;
}
Проблема в том, что на выходе я получаю следующее: (см. прикреплённые файлы) 1 строка - команда printf("Enter the string\n"); тут всё ясно. 2 строка - это то, что я вводил через метод read(); 3 строка - это то, что выводится командой printf(str); (так же пробовал и printf("%s", str); ) . Я не могу понять, что за ерундовина приклеивается после "Hello World!" и как от неё избавиться. А главное, почему она прикрепляется туда. Буду очень благодарен.

Код к задаче: «Вместе с текстом выводится мусор - C (СИ)»

textual
#include <stdio.h>
#include <stdlib.h>
 
char* read() {
    char* str = malloc(sizeof(char));
    size_t size = 0;
    int ch;
 
    while ((ch = getchar()) != '\n') {
        // +1 для резервирования места ещё и под '\0' символ
        str = realloc(str, sizeof(char) * (++size + 1));
        str[size - 1] = ch;
    }
    // Закрываем строку
    str[size] = '\0';
 
    return str;
}
 
int main() {
    printf("Enter the string\n");
    char* str = read();
    printf("%s\n", str);
    free(str);
    system("pause");
    return 0;
}

10   голосов, оценка 4.100 из 5


СОХРАНИТЬ ССЫЛКУ