Конечно.Вы могли бы реализовать версию scanf, которая работала бы так:
Причина, по которой она не является частью библиотеки C, заключается в том, что ей потребуются структуры данных, которые не встроены в библиотеку.Например, связанный список или массив с изменяемым размером.
Но в любом случае вы можете создать функцию scanf, которая принимает расширенную форму шаблонов.Это может выглядеть как super_scanf("%{s:allocate} (%{d*:array,append)", &string, &array)
Но обычно вы либо пишете свой собственный токенизатор и простой парсер, либо переходите к чему-то более мощному, например, к lex / yacc.Или вы можете использовать библиотеку регулярных выражений, например, библиотеку PCRE.