从键盘输入填充动态数组的问题[C]

Issue in filling up dynamic array from keyboard input[C]

我已经在 c 中实现了我自己的动态数组数据结构,现在我正在寻找一种方法来填充它们而不失去它们的动态性。

如果我写类似

char str[ANY_CONSTANT];
fgets(str, ANY_CONSTANT, stdin);

我可以传递给我的程序的元素数量是在编译时定义的,这正是我不希望发生的事情。

如果我这样写

char str[ANY_CONSTANT];
scanf("%s", &str)

我也有同样的情况。有什么功能可以用来从键盘输入没有固定尺寸的数据吗?提前致谢!

您可以尝试 POSIX getline 函数:

char *buf = NULL;
size_t buflen = 0;
ssize_t readlen = getline(&buf, &buflen, stdin);
/* buf points to the allocated buffer containing the input
   buflen specifies the allocated size of the buffer
   readlen specifies the number of bytes actually read */

getline 从控制台读取整行,根据需要重新分配缓冲区以存储整行。