从键盘输入填充动态数组的问题[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 从控制台读取整行,根据需要重新分配缓冲区以存储整行。
我已经在 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 从控制台读取整行,根据需要重新分配缓冲区以存储整行。