Если вы не можете передавать структуры и должны передавать данные в виде строки, тогда вы сможете настроить функцию для чтения из строки, а не из файла. Если функция настолько сложна, как вы описываете, то преобразование fscanf
-> sscanf
, возможно, будет самым простым способом.
Вот идея использования вашего прототипа функции выше. Считайте всю строку данных (не обрабатывая ее) и сохраните в локальном буфере. Таким образом, код может иметь произвольный доступ к данным, как и в случае с файлом, что упрощает прогнозирование и предотвращение переполнения буфера. Начните с malloc
, поместив буфер разумного размера, скопируйте в него данные и realloc
выделите себе больше места по мере необходимости. Получив локальную копию всего буфера данных, просканируйте его и извлеките все необходимые данные.
Обратите внимание, что это может быть сложно, если '\0'
символов являются допустимыми ввода. В этом случае вам придется добавить дополнительную логику для проверки, является ли это концом входной строки или просто нулевым байтом (сложность зависит от конкретного формата буфера данных).