从键盘输入填充动态数组时出现的问题[C]
我已经用c实现了我自己的动态数组数据结构,现在我正在寻找一种在不丢失动态性的情况下填充它们的方法 如果我写了这样的东西从键盘输入填充动态数组时出现的问题[C],c,scanf,fgets,dynamic-arrays,keyboard-input,C,Scanf,Fgets,Dynamic Arrays,Keyboard Input,我已经用c实现了我自己的动态数组数据结构,现在我正在寻找一种在不丢失动态性的情况下填充它们的方法 如果我写了这样的东西 char str[ANY_CONSTANT]; fgets(str, ANY_CONSTANT, stdin); 我可以传递给程序的元素数量是在编译时定义的,这正是我不希望发生的 如果我写了这样的东西 char str[ANY_CONSTANT]; scanf("%s", &str) 我也有同样的情况。是否有任何功能,我可以用来输入数据从键盘没有任何固定的尺寸?
char str[ANY_CONSTANT];
fgets(str, ANY_CONSTANT, stdin);
我可以传递给程序的元素数量是在编译时定义的,这正是我不希望发生的
如果我写了这样的东西
char str[ANY_CONSTANT];
scanf("%s", &str)
我也有同样的情况。是否有任何功能,我可以用来输入数据从键盘没有任何固定的尺寸?提前谢谢 您可以尝试POSIX函数:
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从控制台读取整行数据,根据需要重新分配缓冲区以存储整行数据 两个代码都无效。您正在传递一个指针数组。