Вы можете использовать printf()
и строку специального формата:
char *str = "0123456789";
printf("%.6s\n", str + 1);
Точность в спецификаторе преобразования %s
указывает максимальное количество символов для печати. Вы также можете использовать переменную для определения точности во время выполнения:
int length = 6;
char *str = "0123456789";
printf("%.*s\n", length, str + 1);
В этом примере * используется для указания того, что следующий аргумент (length
) будет содержать точность для преобразования %s
, соответствующий аргумент должен быть int
.
Арифметика указателя может использоваться для указания начальной позиции, как я делал выше.
[EDIT]
Еще один момент: если ваша строка короче, чем ваш спецификатор точности, будет напечатано меньше символов, например:
int length = 10;
char *str = "0123456789";
printf("%.*s\n", length, str + 5);
Напечатает "56789
". Если вы всегда хотите напечатать определенное количество символов, укажите минимальную ширину поля и точность:
printf("%10.10s\n", str + 5);
или
printf("%*.*s\n", length, length, str + 5);
который напечатает:
" 56789"
Вы можете использовать знак минус для выравнивания по левому краю вывода в поле:
printf("%-10.10s\n", str + 5);
Наконец, минимальная ширина поля и точность могут быть разными, т.е.
printf("%8.5s\n", str);
напечатает не более 5 символов, выровненных по правому краю в поле из 8 символов.