Я не думаю, что scanf / fscanf будет делать то, что вам нужно в этом случае, если вы не знаете точный формат входной строки.
Лучшим подходом может быть анализ строки ввода до тех пор, пока вы не нажмете пробел, точку или запятую (или какой-либо другой разделитель), а затем посмотрите, состоит ли из того, что у вас есть, только цифры. Если это так, то у вас есть номер, в противном случае у вас есть слово (при условии, что здесь предложение правильно сформировано). Затем вы можете сохранить это число в массиве или любой другой структуре данных по вашему желанию.
Однако, если структура предложения всегда в одном и том же формате, вы можете использовать такой подход:
int main() {
char* buff = "In this document, there are 345 words and 6 figures";
char extra1[5000];
char extra2[5000];
int a,b;
sscanf(buff,"%[In this document, there are ]%d%[ words and ]%d", extra1, &a, extra2, &b);
cout<<a<<" "<<b<<endl;
return 0;
}