Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从键盘输入填充动态数组时出现的问题[C]_C_Scanf_Fgets_Dynamic Arrays_Keyboard Input - Fatal编程技术网

从键盘输入填充动态数组时出现的问题[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) 我也有同样的情况。是否有任何功能,我可以用来输入数据从键盘没有任何固定的尺寸?

我已经用c实现了我自己的动态数组数据结构,现在我正在寻找一种在不丢失动态性的情况下填充它们的方法

如果我写了这样的东西

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从控制台读取整行数据,根据需要重新分配缓冲区以存储整行数据

两个代码都无效。您正在传递一个指针数组。