我正在尝试创建一个长度可修改的数组,我定义了一个名为“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;
}