Дон прав, что fwrite - самый быстрый.
Тем не менее, есть небольшая известная особенность printf (и snprintf, vprintf и т. Д.), Которая позволяет вам сделать это за один вызов.
printf("%.*s", to - from, aString + from);
Как это работает. Обеспечение точности для строки говорит о том, что print печатает не больше, чем столько символов (он может печатать меньше, если сначала находит '\ 0'). Итак, строка вроде:
printf("%.5s", "0123456789");
напечатает:
01234
Далее, если вам нужно указать точность во время выполнения, замените число на * и укажите длину в качестве параметра функции перед строкой:
printf("%.*s", 5, "0123456789"); // same as before
Если все, что вы хотите сделать, это напечатать одну часть строки, этот трюк излишний. Но в сочетании с другим форматированием это может быть весьма полезно:
printf("Token %d: \"%.*s\"\n",
tok,
token_info[tok].len,
str + token_info[tok].start);