Как указать считываемый размер в scanf?
scanf-ом можно считать определенное кол-во символов, к примеру, с помощью "%10s".
Как считать количество символов из переменной? Не используя при этом просто "%s" или fgets.
Допустим,
int count;
fscanf(stdin, "%d", count);
char* name = new char [count];
fscanf (stdin, /*как указать считываемое кол-во символов count? */, name);
Ответы (1 шт):
Автор решения: eanmos
→ Ссылка
Для scanf − никак.
В функции printf есть похожее поведение − можно дополнительным аргументом указать минимальную ширину поля или точность преобразования. Пример с минимальной шириной поля:
char str[] = "abc";
printf("%*s\n", 10, str); // обратите внимание на звездочку (*)
printf("%10s\n", str);
Можете, как @Alex F посоветовал в комментариях, генерировать строку формата с помощью, например, snprintf:
const size_t count = 3;
char name[count + 1];
const size_t fmt_length = snprintf(NULL, 0, "%%%zus", count);
char fmt[fmt_length + 1];
snprintf(fmt, sizeof fmt, "%%%zus", count);
scanf(fmt, name);