Проблема с заполнением массива Dynami c с клавиатуры [C] - PullRequest
1 голос
/ 31 января 2020

Я реализовал свою собственную структуру данных массива динамических c в c, и теперь я ищу способ заполнить их, не теряя их динамичность.

Если я напишу что-то вроде

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

Количество элементов, которые я могу передать моей программе, определяется во время компиляции, и это именно то, чего я не хочу делать.

Если я напишу что-то вроде

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

У меня такая же ситуация. Есть ли какая-либо функция, которую я могу использовать для ввода данных с клавиатуры без какого-либо фиксированного размера? Заранее спасибо!

1 Ответ

2 голосов
/ 31 января 2020

Вы можете попробовать функцию 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 читает всю строку из консоли, перераспределяя буфер по мере необходимости для сохранения всей строки.

...