我正在尝试创建一个长度可修改的数组,我定义了一个名为“add”的函数,该函数应该在数组的最后一个位置添加一个字符,但这导致putchar和printf无法工作。为什么会发生这种情况?我该如何修复它?
输出应为“hix”,输出显然为“”
#include <stdio.h>
typedef struct
{
    char* ptr;
    size_t len;
}
bytes;
void add(bytes text, char chr)
{
    text.ptr[text.len++] = chr;
}
bytes parse(char text[])
{
    size_t index = 0;
    while (text[index]) ++index;
    return (bytes) {text, index};
}
void print(bytes text)
{
    for (size_t index = 0; index < text.len; ++index)
    {
        putchar(text.ptr[index]);
    }
}
int main()
{
    bytes str = parse("hi");
    add(str, 'x'); // if i remove this line "print" works, but only prints "hi"
    
    print(str);
    return 0;
}