Я думаю, что вы можете достичь чего-то подобного (я сделал подобное), используя fmemopen
, чтобы создать поток из char*
, а затем заменить его на стандартный ввод
Что-то подобное (не уверенесли он полностью функционален, так как я на самом деле пытаюсь запомнить доступные системные вызовы, но это будет что-то похожее на это)
char* args = "(1,2,3)(4,5)(6,7,8)"
FILE *newstdin = fmemopen (args, strlen (args), "r");
FILE *oldstdin = fdup(stdin);
stdin = newstdin;
// do parsing
stdin = oldstdin;